
"""simple docstring"""

from typing import Literal

SCREAMING_SNAKE_CASE_         =  '''ABCDEFGHIJKLMNOPQRSTUVWXYZ'''




def       lowercase__  (   lowerCAmelCase			:   str	,			lowerCAmelCase			:   str	,			lowerCAmelCase			:   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       lowercase__  (   lowerCAmelCase			:   str	,			lowerCAmelCase			:   str	)	-> str:






    """simple docstring"""




    return translate_message(lowerCAmelCase	,			lowerCAmelCase	,			'encrypt'	)




def       lowercase__  (   lowerCAmelCase			:   str	,			lowerCAmelCase			:   str	)	-> str:






    """simple docstring"""




    return translate_message(lowerCAmelCase	,			lowerCAmelCase	,			'decrypt'	)




def       lowercase__  (   )	-> None:






    """simple docstring"""




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

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


if __name__ == "__main__":
   import doctest

   doctest.testmod()
   main()





"""simple docstring"""

import heapq




def       lowercase__  (   lowerCAmelCase			:   str	,			lowerCAmelCase			:   int	,			lowerCAmelCase			:   Optional[Any]	)	-> Union[str, Any]:






    """simple docstring"""




    UpperCAmelCase       =   [(0, start)]  # cost from start node,end node
    UpperCAmelCase       =   set()
    while heap:
        ((UpperCAmelCase)     ,							(UpperCAmelCase))       =   heapq.heappop(lowerCAmelCase	)
        if u in visited:
            continue
        visited.add(lowerCAmelCase	)
        if u == end:
            return cost
        for v, c in graph[u]:
            if v in visited:
                continue
            UpperCAmelCase       =   cost + c
            heapq.heappush(lowerCAmelCase	,			(next_item, v)	)
    return -1


SCREAMING_SNAKE_CASE_         =  {
    '''A''': [['''B''', 2], ['''C''', 5]],
    '''B''': [['''A''', 2], ['''D''', 3], ['''E''', 1], ['''F''', 1]],
    '''C''': [['''A''', 5], ['''F''', 3]],
    '''D''': [['''B''', 3]],
    '''E''': [['''B''', 4], ['''F''', 3]],
    '''F''': [['''C''', 3], ['''E''', 3]],
}
SCREAMING_SNAKE_CASE_         =  {
    '''B''': [['''C''', 1]],
    '''C''': [['''D''', 1]],
    '''D''': [['''F''', 1]],
    '''E''': [['''B''', 1], ['''F''', 3]],
    '''F''': [],
}
SCREAMING_SNAKE_CASE_         =  {
    '''B''': [['''C''', 1]],
    '''C''': [['''D''', 1]],
    '''D''': [['''F''', 1]],
    '''E''': [['''B''', 1], ['''G''', 2]],
    '''F''': [],
    '''G''': [['''F''', 1]],
}

SCREAMING_SNAKE_CASE_         =  dijkstra(G, '''E''', '''C''')
print(short_distance)  # E -- 3 --> F -- 3 --> C == 6

SCREAMING_SNAKE_CASE_         =  dijkstra(Ga, '''E''', '''F''')
print(short_distance)  # E -- 3 --> F == 3

SCREAMING_SNAKE_CASE_         =  dijkstra(Ga, '''E''', '''F''')
print(short_distance)  # E -- 2 --> G -- 1 --> F == 3

if __name__ == "__main__":
   import doctest

   doctest.testmod()



