'''simple docstring'''

import numpy as np

UpperCamelCase__  :						Optional[int]					=      [
    ['a', 'b', 'c', 'd', 'e'],
    ['f', 'g', 'h', 'i', 'k'],
    ['l', 'm', 'n', 'o', 'p'],
    ['q', 'r', 's', 't', 'u'],
    ['v', 'w', 'x', 'y', 'z'],
]


class 					_lowercase						:
      '''simple docstring'''


      def __init__(					self				)      ->      None:



         '''simple docstring'''



         UpperCAmelCase__				:					Optional[int] 					=	np.array(lowerCamelCase_				)




      def 		lowerCAmelCase__       (					self       ,lowerCamelCase_				)      ->      np.ndarray:



         '''simple docstring'''



         UpperCAmelCase__					,   UpperCAmelCase__				:					str 					=	np.where(letter == self.SQUARE				)
         UpperCAmelCase__				:					str 					=	np.concatenate([indexa + 1, indexa + 1]				)
         return indexes




      def 		lowerCAmelCase__       (					self       ,lowerCamelCase_       ,lowerCamelCase_				)      ->      str:



         '''simple docstring'''



         UpperCAmelCase__				:					List[Any] 					=	self.SQUARE[indexa - 1, indexa - 1]
         return letter




      def 		lowerCAmelCase__       (					self       ,lowerCamelCase_				)      ->      str:



         '''simple docstring'''



         UpperCAmelCase__				:					List[Any] 					=	message.lower()
         UpperCAmelCase__				:					str 					=	message.replace(''' '''       ,''''''				)
         UpperCAmelCase__				:					List[str] 					=	message.replace('''j'''       ,'''i'''				)

         UpperCAmelCase__				:					List[str] 					=	np.empty((2, len(lowerCamelCase_				))				)
         for letter_index in range(len(lowerCamelCase_				)				):
            UpperCAmelCase__				:					List[Any] 					=	self.letter_to_numbers(message[letter_index]				)

            UpperCAmelCase__				:					Optional[int] 					=	numbers[0]
            UpperCAmelCase__				:					Optional[int] 					=	numbers[1]

         UpperCAmelCase__				:					int 					=	first_step.reshape(2 * len(lowerCamelCase_				)				)
         UpperCAmelCase__				:					Optional[Any] 					=	''''''
         for numbers_index in range(len(lowerCamelCase_				)				):
            UpperCAmelCase__				:					List[Any] 					=	int(second_step[numbers_index * 2]				)
            UpperCAmelCase__				:					Tuple 					=	int(second_step[(numbers_index * 2) + 1]				)
            UpperCAmelCase__				:					Optional[Any] 					=	self.numbers_to_letter(lowerCamelCase_       ,lowerCamelCase_				)
            UpperCAmelCase__				:					List[Any] 					=	encoded_message + letter

         return encoded_message




      def 		lowerCAmelCase__       (					self       ,lowerCamelCase_				)      ->      str:



         '''simple docstring'''



         UpperCAmelCase__				:					List[str] 					=	message.lower()
         message.replace(''' '''       ,''''''				)
         UpperCAmelCase__				:					Tuple 					=	np.empty(2 * len(lowerCamelCase_				)				)
         for letter_index in range(len(lowerCamelCase_				)				):
            UpperCAmelCase__				:					Tuple 					=	self.letter_to_numbers(message[letter_index]				)
            UpperCAmelCase__				:					List[str] 					=	numbers[0]
            UpperCAmelCase__				:					Optional[int] 					=	numbers[1]

         UpperCAmelCase__				:					List[Any] 					=	first_step.reshape((2, len(lowerCamelCase_				))				)
         UpperCAmelCase__				:					Union[str, Any] 					=	''''''
         for numbers_index in range(len(lowerCamelCase_				)				):
            UpperCAmelCase__				:					Tuple 					=	int(second_step[0, numbers_index]				)
            UpperCAmelCase__				:					List[Any] 					=	int(second_step[1, numbers_index]				)
            UpperCAmelCase__				:					int 					=	self.numbers_to_letter(lowerCamelCase_       ,lowerCamelCase_				)
            UpperCAmelCase__				:					List[Any] 					=	decoded_message + letter

         return decoded_message





'''simple docstring'''

from math import factorial, radians







def __UpperCamelCase( _A       :					float	,      _A       :					int = 18	,      _A       :					int = 10     ):
   '''simple docstring'''
   UpperCAmelCase__				:					int 					=	angle_in_degrees - ((angle_in_degrees // 3_6_0.0) * 3_6_0.0)

   # Converting from degrees to radians
   UpperCAmelCase__				:					Dict 					=	radians(_A     )

   UpperCAmelCase__				:					Union[str, Any] 					=	angle_in_radians
   UpperCAmelCase__				:					List[str] 					=	3
   UpperCAmelCase__				:					int 					=	-1

   for _ in range(_A     ):
      result += (b * (angle_in_radians**a)) / factorial(_A     )

      UpperCAmelCase__				:					List[str] 					=	-b  # One positive term and the next will be negative and so on...
      a += 2  # Increased by 2 for every term.

   return round(_A	,      _A     )


if __name__ == "__main__":
  __import__('doctest').testmod()




