```python
def step_cost(kind: str) -> int:
    """
    Returns the cost of a single step based on its kind.
    """
    if kind == 'walk':
        return 1
    elif kind == 'bike':
        return 2
    elif kind == 'drive':
        return 3
    else:
        raise ValueError("Invalid step kind: {}".format(kind))

def path_toll(steps: list[str]) -> int:
    """
    Calculates the total toll for a path, where every third step is free.
    """
    toll = 0
    for i, step in enumerate(steps):
        if (i + 1) % 3 == 0:
            toll += 0
        else:
            toll += step_cost(step)
    return toll
```