```ts
export function stepCost(distance: number, rate: number): number {
  return distance * rate;
}

/** The cost of a whole trip, never below the minimum charge. */
export function tripCost(
  hops: number[],
  rate: number,
  minimum: number,
): number {
  let total = 0;
  for (const hop of hops) {
    total += Math.max(stepCost(hop, rate), minimum);
  }
  return Math.max(total, minimum);
}
```