



from __future__ import annotations





def 		a__      (		_UpperCamelCase      :			dict			,_UpperCamelCase      :			str				):
   __lowerCamelCase				,__lowerCamelCase    				=     set(_UpperCamelCase				), [start]

   while stack:
      __lowerCamelCase    				=     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_								=       {
    """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"""))











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

   __lowerCamelCase    				=     sorted(string.lower()				)
   return len(_UpperCamelCase				) == len(set(_UpperCamelCase				)				)


if __name__ == "__main__":
  a_								=       input("""Enter a string """).strip()

  a_								=       is_isogram(input_str)
  print(f"{input_str} is {'an' if isogram else 'not an'} isogram.")






