code: 
  from __future__ import annotations
  
  import random
  import string
  
  
  
  
  
  class      UpperCamelCase_			:
  
  
  
  
  
  
  
  						'''simple docstring'''
  
  
  
  						def __init__( self       :Dict		,						lowerCAmelCase__       :str | None = None    )     ->None:
  										lowercase						    =			passcode or self.__passcode_creator()
  										lowercase						    =			self.__make_key_list()
  										lowercase						    =			self.__make_shift_key()
  
  
  
  
  
  						def __str__( self       :Dict    )     ->str:
  										return "".join(self.__passcode    )
  
  
  
  
  
  						def 					SCREAMING_SNAKE_CASE( self       :str		,						lowerCAmelCase__       :list[int]    )     ->list[int]:
  										for i in range(1		,						len(lowerCAmelCase__    )		,						2    ):
  														iterlist[i] *= -1
  										return iterlist
  
  
  
  
  
  						def 					SCREAMING_SNAKE_CASE( self       :int    )     ->list[str]:
  										lowercase						    =			string.ascii_letters + string.digits
  										lowercase						    =			[random.choice(lowerCAmelCase__    ) for _ in range(random.randint(10		,						20    )    )]
  										return password
  
  
  
  
  
  						def 					SCREAMING_SNAKE_CASE( self       :Union[str, Any]    )     ->list[str]:
  										lowercase						    =			(
  										    string.ascii_letters + string.digits + string.punctuation + " \t\n"
  										)
  
  										lowercase						    =			[]
  
  										# creates points known as breakpoints to break the key_list_options at those
  										# points and pivot each substring
  										lowercase						    =			sorted(set(self.__passcode    )    )
  										lowercase						    =			[]
  
  										# algorithm for creating a new shuffled list, keys_l, out of key_list_options
  										for i in key_list_options:
  														temp_list.extend(lowerCAmelCase__    )
  
  														# checking breakpoints at which to pivot temporary sublist and add it into
  														# keys_l
  														if i in breakpoints or i == key_list_options[-1]:
  																		keys_l.extend(temp_list[::-1]    )
  																		temp_list.clear()
  
          # returning a shuffled keys_l to prevent brute force guessing of shift key
  										return keys_l
  
  
  
  
  
  						def 					SCREAMING_SNAKE_CASE( self       :Optional[int]    )     ->int:
  										lowercase						    =			sum(self.__neg_pos([ord(lowerCAmelCase__    ) for x in self.__passcode]    )    )
  										return num if num > 0 else len(self.__passcode    )
  
  
  
  
  
  						def 					SCREAMING_SNAKE_CASE( self       :str		,						lowerCAmelCase__       :str    )     ->str:
  										lowercase						    =			""
  
  										# decoding shift like Caesar cipher algorithm implementing negative shift or
  										# reverse shift or left shift
  										for i in encoded_message:
  														lowercase						    =			self.__key_list.index(lowerCAmelCase__    )
  														decoded_message += self.__key_list[
  														    (position - self.__shift_key) % -len(self.__key_list    )
  														]
  
  										return decoded_message
  
  
  
  
  
  						def 					SCREAMING_SNAKE_CASE( self       :Dict		,						lowerCAmelCase__       :str    )     ->str:
  										lowercase						    =			""
  
  										# encoding shift like Caesar cipher algorithm implementing positive shift or
  										# forward shift or right shift
  										for i in plaintext:
  														lowercase						    =			self.__key_list.index(lowerCAmelCase__    )
  														encoded_message += self.__key_list[
  														    (position + self.__shift_key) % len(self.__key_list    )
  														]
  
  										return encoded_message
  
  
  
  
  def    __snake_case       (  __magic_name__ = "Hello, this is a modified Caesar cipher"	):
  
  
  
  
  
  
  
  				'''simple docstring'''
  
  
  				lowercase						    =			ShuffledShiftCipher()
  				return cipa.decrypt(cipa.encrypt(__magic_name__	)	)
  
  
  if __name__ == "__main__":
  						import doctest
  
  						doctest.testmod()
  
style_context: 
  _snake_case			:       List[Any]      =						{
      "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       (  __magic_name__	):
  
  
  
  
  
  
  
  				'''simple docstring'''
  
  
  				return [alphabet[char] for char in key.upper()]
  
  def    __snake_case       (  __magic_name__		,						__magic_name__	):
  
  
  
  
  
  
  
  				'''simple docstring'''
  
  
  				lowercase						    =			""
  				lowercase						    =			0
  				lowercase						    =			generate_table(__magic_name__	)
  				for char in words.upper():
  								cipher += get_opponent(table[count]		,						__magic_name__	)
  								lowercase						    =			(count + 1) % len(__magic_name__	)
  				return cipher
  
  def    __snake_case       (  __magic_name__		,						__magic_name__	):
  
  
  
  
  
  
  
  				'''simple docstring'''
  
  
  				return encrypt(__magic_name__		,						__magic_name__	)
  
  def    __snake_case       (  __magic_name__		,						__magic_name__	):
  
  
  
  
  
  
  
  				'''simple docstring'''
  
  
  				lowercase						    =			0 if char in table[0] else 1
  				lowercase						    =			table[row].index(__magic_name__	)
  				return row, col
  
  def    __snake_case       (  __magic_name__		,						__magic_name__	):
  
  
  
  
  
  
  
  				'''simple docstring'''
  
  
  				lowercase    ,  lowercase						    =			get_position(__magic_name__		,						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...
  						_snake_case			:       List[Any]      =						input("Enter key: ").strip()
  						_snake_case			:       Optional[int]      =						input("Enter text to encrypt: ").strip()
  						_snake_case			:       Optional[Any]      =						encrypt(key, text)
  
  						print(F"Encrypted: {cipher_text}")
  						print(F"Decrypted with key: {decrypt(key, cipher_text)}")
  