'''simple docstring'''

def       __UpperCamelCase	(       UpperCAmelCase					):
 lowercase__    :   Tuple						= ''
 for ch in key:
  if ch == " " or ch not in key_no_dups and ch.isalpha():
   key_no_dups += ch
 return key_no_dups
def       __UpperCamelCase	(       UpperCAmelCase					):
 lowercase__    :   Tuple						= [chr(i + 65					) for i in range(26					)]
 # Remove duplicate characters from key
 lowercase__    :   List[str]						= remove_duplicates(key.upper()					)
 lowercase__    :   str						= len(lowerCAmelCase_					)
 # First fill cipher with key characters
 lowercase__    :   List[str]						= {alphabet[i]: char for i, char in enumerate(lowerCAmelCase_					)}
 # Then map remaining characters in alphabet to
 # the alphabet from the beginning
 for i in range(len(lowerCAmelCase_					)		,					26					):
  lowercase__    :   Tuple						= alphabet[i - offset]
  # Ensure we are not mapping letters to letters previously mapped
  while char in key:
   offset -= 1
   lowercase__    :   Tuple						= alphabet[i - offset]
  lowercase__    :   Dict						= char
 return cipher_alphabet
def       __UpperCamelCase	(       UpperCAmelCase		,					UpperCAmelCase					):
 return "".join(cipher_map.get(lowerCAmelCase_		,					lowerCAmelCase_					) for ch in message.upper()					)
def       __UpperCamelCase	(       UpperCAmelCase		,					UpperCAmelCase					):
 lowercase__    :   List[Any]						= {v: k for k, v in cipher_map.items()}
 return "".join(rev_cipher_map.get(lowerCAmelCase_		,					lowerCAmelCase_					) for ch in message.upper()					)
def       __UpperCamelCase	(       ):
 lowercase__    :   Optional[int]						= input('''Enter message to encode or decode: '''					).strip()
 lowercase__    :   Union[str, Any]						= input('''Enter keyword: '''					).strip()
 lowercase__    :   List[str]						= input('''Encipher or decipher? E/D:'''					).strip()[0].lower()
 try:
  lowercase__    :   Dict						= {'e': encipher, 'd': decipher}[option]
 except KeyError:
  raise KeyError('''invalid input option'''					)
 lowercase__    :   List[Any]						= create_cipher_map(lowerCAmelCase_					)
 print(func(lowerCAmelCase_		,					lowerCAmelCase_					)					)


if __name__ == "__main__":
  import doctest

  doctest.testmod()
  main()





'''simple docstring'''

def       __UpperCamelCase	(       UpperCAmelCase					):
 if not all(x.isalpha() for x in string					):
  raise ValueError('''String must only contain alphabetic characters.'''					)

 lowercase__    :   Tuple						= sorted(string.lower()					)
 return len(UpperCAmelCase					) == len(set(UpperCAmelCase					)					)


if __name__ == "__main__":
  __a:			Union[str, Any]	       =       input("""Enter a string """).strip()

  __a:			Tuple	       =       is_isogram(input_str)
  print(F'{input_str} is {"an" if isogram else "not an"} isogram.')

