def min_distance_within_k_hops(n: int, flights: List[List[int]], src: int, dst: int, k: int) -> int:
graph = defaultdict(list)
for frm, to, price in flights:
graph[frm].append((to, price))
dist = {src: math.inf for src in range(n)}
dist[src] = 0
heap = [(0, 0, src)]
while heap:
stops, distance, node = heapq.heappop(heap)
for neigh, weight in graph[node]:
if stops <= k and dist[neigh] > distance + weight:
dist[neigh] = distance + weight
heapq.heappush(heap, (stops + 1, dist[neigh], neigh))
return -1 if dist[dst] == math.inf else dist[dst]