



from typing import Literal

A_		:  str										=  '''ABCDEFGHIJKLMNOPQRSTUVWXYZ'''


def 						UpperCAmelCase__   (   UpperCAmelCase__			:str			,       UpperCAmelCase__			:str			,       UpperCAmelCase__			:Literal["encrypt", "decrypt"]       ):






 '''simple docstring'''

 a							=		LETTERS if mode == "decrypt" else key
 a							=		key if mode == "decrypt" else LETTERS
 a							=		""
 # loop through each symbol in the message
 for symbol in message:
  if symbol.upper() in chars_a:
   # encrypt/decrypt the symbol
   a							=		chars_a.find(symbol.upper()       )
   if symbol.isupper():
    translated += chars_b[sym_index].upper()
   else:
    translated += chars_b[sym_index].lower()
  else:
   # symbol is not in LETTERS, just add it
   translated += symbol
 return translated


def 						UpperCAmelCase__   (   UpperCAmelCase__			:str			,       UpperCAmelCase__			:str       ):






 '''simple docstring'''

 return translate_message(UpperCAmelCase__			,       UpperCAmelCase__			,       "encrypt"       )


def 						UpperCAmelCase__   (   UpperCAmelCase__			:str			,       UpperCAmelCase__			:str       ):






 '''simple docstring'''

 return translate_message(UpperCAmelCase__			,       UpperCAmelCase__			,       "decrypt"       )


def 						UpperCAmelCase__   (   ):






 '''simple docstring'''

 a							=		"Hello World"
 a							=		"QWERTYUIOPASDFGHJKLZXCVBNM"
 a							=		"decrypt"  # set to 'encrypt' or 'decrypt'

 if mode == "encrypt":
  a							=		encrypt_message(UpperCAmelCase__			,       UpperCAmelCase__       )
 elif mode == "decrypt":
  a							=		decrypt_message(UpperCAmelCase__			,       UpperCAmelCase__       )
 print(F"""Using the key {key}, the {mode}ed message is: {translated}"""       )


if __name__ == "__main__":
     import doctest

     doctest.testmod()
     main()





'''simple docstring'''
import unittest
from timeit import timeit



def 				lowerCAmelCase__	(       UpperCAmelCase    ,       UpperCAmelCase     ):






       """simple docstring"""





       snake_case__					:	Any          =					first_num if first_num >= second_num else second_num
       snake_case__					:	Optional[Any]          =					max_num
       while (common_mult % first_num > 0) or (common_mult % second_num > 0):
              common_mult += max_num
       return common_mult



def 				lowerCAmelCase__	(       UpperCAmelCase    ,       UpperCAmelCase     ):






       """simple docstring"""





       return b if a == 0 else greatest_common_divisor(b % a    ,       UpperCAmelCase     )



def 				lowerCAmelCase__	(       UpperCAmelCase    ,       UpperCAmelCase     ):






       """simple docstring"""





       return first_num // greatest_common_divisor(UpperCAmelCase    ,       UpperCAmelCase     ) * second_num



def 				lowerCAmelCase__	(       ):






       """simple docstring"""





       snake_case__					:	Tuple          =					(
           """from __main__ import least_common_multiple_slow, least_common_multiple_fast"""
       )
       print(
           """least_common_multiple_slow():"""    ,       timeit("""least_common_multiple_slow(1000, 999)"""    ,       setup=UpperCAmelCase     )    ,       )
       print(
           """least_common_multiple_fast():"""    ,       timeit("""least_common_multiple_fast(1000, 999)"""    ,       setup=UpperCAmelCase     )    ,       )







class 					_A						(						unittest.TestCase							):



   '''simple docstring'''






   _lowercase    						= (
       (10, 20),
       (13, 15),
       (4, 31),
       (10, 42),
       (43, 34),
       (5, 12),
       (12, 25),
       (10, 25),
       (6, 9),
   )
   _lowercase    						= (20, 195, 124, 210, 1462, 60, 300, 50, 18)




   def   __lowerCAmelCase						(	self	:					Optional[int]						)->	Optional[Any]:
          for i, (first_num, second_num) in enumerate(self.test_inputs						):
                 snake_case__					:	List[Any]          =					least_common_multiple_slow(lowerCamelCase					, lowerCamelCase						)
                 snake_case__					:	Optional[Any]          =					least_common_multiple_fast(lowerCamelCase					, lowerCamelCase						)
                 with self.subTest(i=lowerCamelCase						):
                        self.assertEqual(lowerCamelCase					, self.expected_results[i]						)
                        self.assertEqual(lowerCamelCase					, self.expected_results[i]						)


if __name__ == "__main__":
     benchmark()
     unittest.main()




