'''simple docstring'''

from __future__ import annotations
def       __UpperCamelCase	(       UpperCAmelCase		,					UpperCAmelCase					):
 lowercase__			,							lowercase__    :   int						= set(UpperCAmelCase					), [start]

 while stack:
  lowercase__    :   Optional[int]						= stack.pop()
  explored.add(UpperCAmelCase					)
  # Differences from BFS:
  # 1) pop last element instead of first one
  # 2) add adjacent elements to stack without exploring them
  for adj in reversed(graph[v]					):
   if adj not in explored:
    stack.append(UpperCAmelCase					)
 return explored


__a:			Optional[Any]	       =       {
    """A""": ["""B""", """C""", """D"""],
    """B""": ["""A""", """D""", """E"""],
    """C""": ["""A""", """F"""],
    """D""": ["""B""", """D"""],
    """E""": ["""B""", """F"""],
    """F""": ["""C""", """E""", """G"""],
    """G""": ["""F"""],
}

if __name__ == "__main__":
  import doctest

  doctest.testmod()
  print(depth_first_search(G, """A"""))


'''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.')

