




import heapq




def        __SCREAMING_SNAKE_CASE (	lowercase_       ,  lowercase_       ,  lowercase_   )							->						Optional[int]:

    """simple docstring"""


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


a_ 		=  {
    "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]],
}
a_ 		=  {
    "B": [["C", 1]],
    "C": [["D", 1]],
    "D": [["F", 1]],
    "E": [["B", 1], ["F", 3]],
    "F": [],
}
a_ 		=  {
    "B": [["C", 1]],
    "C": [["D", 1]],
    "D": [["F", 1]],
    "E": [["B", 1], ["G", 2]],
    "F": [],
    "G": [["F", 1]],
}

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

a_ 		=  dijkstra(Ga, "E", "F")
print(short_distance)  # E -- 3 --> F == 3

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

if __name__ == "__main__":
 import doctest

 doctest.testmod()












def        __SCREAMING_SNAKE_CASE (	lowercase_   )							->						str:

    """simple docstring"""


    return " ".join(sorted(set(sentence.split()   )   )   )


if __name__ == "__main__":
 import doctest

 doctest.testmod()






