```ts
export function climbBudget(tolls: string[]): number {
  if (tolls.length === 0) return 0;

  const isValidToll = (toll: string): boolean => {
    if (!/^\d+$/.test(toll)) throw new Error(`Invalid toll at position ${tolls.indexOf(toll)}.`);
    if (toll.startsWith('0')) throw new Error(`Leading zero found at position ${tolls.indexOf(toll)}.`);
    return true;
  };

  const costs = tolls.map(isValidToll).map(Number);

  const minCost = (arr: number[]): number => {
    let min = Infinity;
    for (let i = 0; i < arr.length; i++) {
      if (i > 0 && arr[i] + arr[i - 1] < min) min = arr[i] + arr[i - 1];
      else if (arr[i] < min) min = arr[i];
    }
    return min;
  };

  return minCost(costs);
}
```