Use the Bellman-Ford algorithm. Run k + 1 rounds of relaxation. In each round, try to improve distances by using one more edge.
The trick is to copy the distance array at the start of each round. Without copying, you might use distances that were updated in the current round, effectively using more stops than allowed.
After k + 1 rounds, dist[dst] is your answer. Each round allows one more hop, so k + 1 rounds permits exactly k intermediate stops.