


"""simple docstring"""
UpperCAmelCase   =	{
    """A""": ("""ABCDEFGHIJKLM""", """NOPQRSTUVWXYZ"""),
    """B""": ("""ABCDEFGHIJKLM""", """NOPQRSTUVWXYZ"""),
    """C""": ("""ABCDEFGHIJKLM""", """ZNOPQRSTUVWXY"""),
    """D""": ("""ABCDEFGHIJKLM""", """ZNOPQRSTUVWXY"""),
    """E""": ("""ABCDEFGHIJKLM""", """YZNOPQRSTUVWX"""),
    """F""": ("""ABCDEFGHIJKLM""", """YZNOPQRSTUVWX"""),
    """G""": ("""ABCDEFGHIJKLM""", """XYZNOPQRSTUVW"""),
    """H""": ("""ABCDEFGHIJKLM""", """XYZNOPQRSTUVW"""),
    """I""": ("""ABCDEFGHIJKLM""", """WXYZNOPQRSTUV"""),
    """J""": ("""ABCDEFGHIJKLM""", """WXYZNOPQRSTUV"""),
    """K""": ("""ABCDEFGHIJKLM""", """VWXYZNOPQRSTU"""),
    """L""": ("""ABCDEFGHIJKLM""", """VWXYZNOPQRSTU"""),
    """M""": ("""ABCDEFGHIJKLM""", """UVWXYZNOPQRST"""),
    """N""": ("""ABCDEFGHIJKLM""", """UVWXYZNOPQRST"""),
    """O""": ("""ABCDEFGHIJKLM""", """TUVWXYZNOPQRS"""),
    """P""": ("""ABCDEFGHIJKLM""", """TUVWXYZNOPQRS"""),
    """Q""": ("""ABCDEFGHIJKLM""", """STUVWXYZNOPQR"""),
    """R""": ("""ABCDEFGHIJKLM""", """STUVWXYZNOPQR"""),
    """S""": ("""ABCDEFGHIJKLM""", """RSTUVWXYZNOPQ"""),
    """T""": ("""ABCDEFGHIJKLM""", """RSTUVWXYZNOPQ"""),
    """U""": ("""ABCDEFGHIJKLM""", """QRSTUVWXYZNOP"""),
    """V""": ("""ABCDEFGHIJKLM""", """QRSTUVWXYZNOP"""),
    """W""": ("""ABCDEFGHIJKLM""", """PQRSTUVWXYZNO"""),
    """X""": ("""ABCDEFGHIJKLM""", """PQRSTUVWXYZNO"""),
    """Y""": ("""ABCDEFGHIJKLM""", """OPQRSTUVWXYZN"""),
    """Z""": ("""ABCDEFGHIJKLM""", """OPQRSTUVWXYZN"""),
}

def 							_snake_case			(      __snake_case       :			str      ):




   """simple docstring"""







   return [alphabet[char] for char in key.upper()]

def 							_snake_case			(      __snake_case       :			str	,   __snake_case       :			str      ):




   """simple docstring"""







   _lowerCamelCase  :				str      =		""""""
   _lowerCamelCase  :				Tuple      =		0
   _lowerCamelCase  :				int      =		generate_table(__snake_case      )
   for char in words.upper():
      cipher += get_opponent(table[count]	,   __snake_case      )
      _lowerCamelCase  :				int      =		(count + 1) % len(__snake_case      )
   return cipher

def 							_snake_case			(      __snake_case       :			str	,   __snake_case       :			str      ):




   """simple docstring"""







   return encrypt(__snake_case	,   __snake_case      )

def 							_snake_case			(      __snake_case       :			tuple[str, str]	,   __snake_case       :			str      ):




   """simple docstring"""







   _lowerCamelCase  :				Optional[Any]      =		0 if char in table[0] else 1
   _lowerCamelCase  :				Optional[int]      =		table[row].index(__snake_case      )
   return row, col

def 							_snake_case			(      __snake_case       :			tuple[str, str]	,   __snake_case       :			str      ):




   """simple docstring"""







   _lowerCamelCase      ,						_lowerCamelCase  :				Optional[Any]      =		get_position(__snake_case	,   char.upper()      )
   if row == 1:
      return table[0][col]
   else:
      return table[1][col] if row == 0 else char


if __name__ == "__main__":
 import doctest

 doctest.testmod()  # Fist ensure that all our tests are passing...
 UpperCAmelCase   =	input("""Enter key: """).strip()
 UpperCAmelCase   =	input("""Enter text to encrypt: """).strip()
 UpperCAmelCase   =	encrypt(key, text)

 print(f'''Encrypted: {cipher_text}''')
 print(f'''Decrypted with key: {decrypt(key, cipher_text)}''')





"""simple docstring"""
from itertools import permutations

def 							_snake_case			(      __snake_case       :			int = 5      ):




   """simple docstring"""







   if gon_side < 3 or gon_side > 5:
      raise ValueError("""gon_side must be in the range [3, 5]"""      )

   # Since it's 16, we know 10 is on the outer ring
   # Put the big numbers at the end so that they are never the first number
   _lowerCamelCase  :				Dict      =		list(range(gon_side + 1	,   0	,   -1      )      )
   _lowerCamelCase  :				Optional[int]      =		list(range(gon_side + 2	,   gon_side * 2 + 1      )      )

   for perm in permutations(small_numbers + big_numbers      ):
      _lowerCamelCase  :				List[str]      =		generate_gon_ring(__snake_case	,   list(__snake_case      )      )
      if is_magic_gon(__snake_case      ):
         return int("""""".join(str(__snake_case      ) for n in numbers      )      )

   _lowerCamelCase  :				Union[str, Any]      =		F'Magic {gon_side}-gon ring is impossible'
   raise ValueError(__snake_case      )

def 							_snake_case			(      __snake_case       :			int	,   __snake_case       :			list[int]      ):




   """simple docstring"""







   _lowerCamelCase  :				Union[str, Any]      =		[0] * (gon_side * 3)
   _lowerCamelCase  :				Dict      =		perm[0:3]
   perm.append(perm[1]      )

   _lowerCamelCase  :				Tuple      =		1 if gon_side < 5 else 2

   for i in range(1	,   len(__snake_case      ) // 3 + magic_number      ):
      _lowerCamelCase  :				Dict      =		perm[2 * i + 1]
      _lowerCamelCase  :				str      =		result[3 * i - 1]
      _lowerCamelCase  :				Dict      =		perm[2 * i + 2]

   return result

def 							_snake_case			(      __snake_case       :			list[int]      ):




   """simple docstring"""







   if len(__snake_case      ) % 3 != 0:
      raise ValueError("""a gon ring should have a length that is a multiple of 3"""      )

   if min(numbers[::3]      ) != numbers[0]:
      return False

   _lowerCamelCase  :				str      =		sum(numbers[:3]      )

   return all(sum(numbers[i : i + 3]      ) == total for i in range(3	,   len(__snake_case      )	,   3      )      )


if __name__ == "__main__":
 print(solution())

