





from typing import Literal

UpperCAmelCase_											=  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def     A__					(						SCREAMING_SNAKE_CASE_      :			str							,  SCREAMING_SNAKE_CASE_      :			str							,  SCREAMING_SNAKE_CASE_      :			Literal["encrypt", "decrypt"]	)     ->     str:






   """simple docstring"""







   _UpperCAmelCase											=      LETTERS if mode == '''decrypt''' else key
   _UpperCAmelCase											=      key if mode == '''decrypt''' else LETTERS
   _UpperCAmelCase											=      ''''''
   # loop through each symbol in the message
   for symbol in message:
      if symbol.upper() in chars_a:
         # encrypt/decrypt the symbol
         _UpperCAmelCase											=      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     A__					(						SCREAMING_SNAKE_CASE_      :			str							,  SCREAMING_SNAKE_CASE_      :			str	)     ->     str:






   """simple docstring"""







   return translate_message(SCREAMING_SNAKE_CASE_							,  SCREAMING_SNAKE_CASE_							,  '''encrypt'''	)
def     A__					(						SCREAMING_SNAKE_CASE_      :			str							,  SCREAMING_SNAKE_CASE_      :			str	)     ->     str:






   """simple docstring"""







   return translate_message(SCREAMING_SNAKE_CASE_							,  SCREAMING_SNAKE_CASE_							,  '''decrypt'''	)
def     A__					(						)     ->     None:






   """simple docstring"""







   _UpperCAmelCase											=      '''Hello World'''
   _UpperCAmelCase											=      '''QWERTYUIOPASDFGHJKLZXCVBNM'''
   _UpperCAmelCase											=      '''decrypt'''  # set to 'encrypt' or 'decrypt'

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


if __name__ == "__main__":
   import doctest

   doctest.testmod()
   main()






def     A__					(						SCREAMING_SNAKE_CASE_      :			Optional[int]							,  SCREAMING_SNAKE_CASE_      :			str	)     ->     List[str]:






   """simple docstring"""







   print('''\nVertex Distance'''	)
   for i in range(SCREAMING_SNAKE_CASE_	):
      if dist[i] != float('''inf'''	):
         print(SCREAMING_SNAKE_CASE_							,  '''\t'''							,  int(dist[i]	)							,  end='''\t'''	)
      else:
         print(SCREAMING_SNAKE_CASE_							,  '''\t'''							,  '''INF'''							,  end='''\t'''	)
      print()
def     A__					(						SCREAMING_SNAKE_CASE_      :			Any							,  SCREAMING_SNAKE_CASE_      :			Optional[Any]							,  SCREAMING_SNAKE_CASE_      :			str	)     ->     Any:






   """simple docstring"""







   _UpperCAmelCase											=      float('''inf'''	)
   _UpperCAmelCase											=      -1
   for i in range(SCREAMING_SNAKE_CASE_	):
      if (not vset[i]) and mdist[i] < min_val:
         _UpperCAmelCase											=      i
         _UpperCAmelCase											=      mdist[i]
   return min_ind
def     A__					(						SCREAMING_SNAKE_CASE_      :			str							,  SCREAMING_SNAKE_CASE_      :			Dict							,  SCREAMING_SNAKE_CASE_      :			int	)     ->     Any:






   """simple docstring"""







   _UpperCAmelCase											=      [float('''inf'''	) for _ in range(SCREAMING_SNAKE_CASE_	)]
   _UpperCAmelCase											=      [False for _ in range(SCREAMING_SNAKE_CASE_	)]
   _UpperCAmelCase											=      0.0

   for _ in range(v - 1	):
      _UpperCAmelCase											=      min_dist(SCREAMING_SNAKE_CASE_							,  SCREAMING_SNAKE_CASE_							,  SCREAMING_SNAKE_CASE_	)
      _UpperCAmelCase											=      True

      for i in range(SCREAMING_SNAKE_CASE_	):
         if (
             (not vset[i])
             and graph[u][i] != float('''inf'''	)
             and mdist[u] + graph[u][i] < mdist[i]
         ):
            _UpperCAmelCase											=      mdist[u] + graph[u][i]

   print_dist(SCREAMING_SNAKE_CASE_							,  SCREAMING_SNAKE_CASE_	)


if __name__ == "__main__":
   UpperCAmelCase_											=  int(input("Enter number of vertices: ").strip())
   UpperCAmelCase_											=  int(input("Enter number of edges: ").strip())

   UpperCAmelCase_											=  [[float("inf") for i in range(V)] for j in range(V)]

   for i in range(V):
      UpperCAmelCase_											=  0.0

   for i in range(E):
      print("\nEdge ", i + 1)
      UpperCAmelCase_											=  int(input("Enter source:").strip())
      UpperCAmelCase_											=  int(input("Enter destination:").strip())
      UpperCAmelCase_											=  float(input("Enter weight:").strip())
      UpperCAmelCase_											=  weight

   UpperCAmelCase_											=  int(input("\nEnter shortest path source:").strip())
   dijkstra(graph, V, gsrc)