def cheapest_flight(n, flights, source, destination, k):
    dist = [float('inf')] * n
    dist[source] = 0
    for _ in range(k + 1):
        next_dist = dist.copy()
        for u, v, price in flights:
            next_dist[v] = min(next_dist[v], dist[u] + price)
        dist = next_dist
    return -1 if dist[destination] == float('inf') else dist[destination]
