
import heapq


def       UpperCAmelCase_					(  __lowerCAmelCase		,   __lowerCAmelCase		,   __lowerCAmelCase		)	->  str:
    __lowercase						:     Dict		      =    [(0, start)]  # cost from start node,end node
    __lowercase						:     int		      =    set()
    while heap:
        ((__lowercase)      , (__lowercase))						:     Union[str, Any]		      =    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
            __lowercase						:     Dict		      =    cost + c
            heapq.heappush(__lowerCAmelCase		,   (next_item, v)		)
    return -1


__lowerCAmelCase   :     List[Any]      =						{
    "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]],
}
__lowerCAmelCase   :     Dict      =						{
    "B": [["C", 1]],
    "C": [["D", 1]],
    "D": [["F", 1]],
    "E": [["B", 1], ["F", 3]],
    "F": [],
}
__lowerCAmelCase   :     Union[str, Any]      =						{
    "B": [["C", 1]],
    "C": [["D", 1]],
    "D": [["F", 1]],
    "E": [["B", 1], ["G", 2]],
    "F": [],
    "G": [["F", 1]],
}

__lowerCAmelCase   :     Union[str, Any]      =						dijkstra(G, "E", "C")
print(short_distance)  # E -- 3 --> F -- 3 --> C == 6

__lowerCAmelCase   :     Dict      =						dijkstra(Ga, "E", "F")
print(short_distance)  # E -- 3 --> F == 3

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

if __name__ == "__main__":
 import doctest

 doctest.testmod()




from __future__ import annotations

import math
from itertools import permutations


def       UpperCAmelCase_					(  __lowerCAmelCase		)	->  bool:

    if 1 < number < 4:
        # 2 and 3 are primes
        return True
    elif number < 2 or number % 2 == 0 or number % 3 == 0:
        # Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
        return False

    # All primes number are in format of 6k +/- 1
    for i in range(5		,   int(math.sqrt(__lowerCAmelCase		) + 1		)		,   6		):
        if number % i == 0 or number % (i + 2) == 0:
            return False
    return True


def       UpperCAmelCase_					(  __lowerCAmelCase = 7		)	->  int:
    __lowercase						:     Union[str, Any]		      =    ''''''.join(str(__lowerCAmelCase		) for i in range(1		,   n + 1		)		)
    __lowercase						:     Dict		      =    [int(''''''.join(__lowerCAmelCase		)		) for i in permutations(__lowerCAmelCase		,   __lowerCAmelCase		)]
    __lowercase						:     int		      =    [num for num in perm_list if is_prime(__lowerCAmelCase		)]
    return max(__lowerCAmelCase		) if pandigitals else 0


if __name__ == "__main__":
 print(F'{solution() = }')


