```python
def step_cost(kind: str) -> int:
    """
    Returns the cost of one step of the given kind.
    """
    if kind == "walk":
        return 1
    elif kind == "run":
        return 2
    elif kind == "fly":
        return 3
    else:
        raise ValueError("Invalid kind")

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