```python
def fleet_hops(count: int, lts: list, builds: list, hop: int) -> int:
    if hop == 0:
        raise ValueError("Hop must be greater than zero")
    if count <= 0:
        raise ValueError("Count must be positive")
    if not isinstance(count, int) or count < 0:
        raise ValueError("Count must be a non-negative integer")
    if not isinstance(hop, int) or hop <= 0:
        raise ValueError("Hop must be a positive integer")
    if not isinstance(lts, list) or not all(isinstance(x, int) for x in lts):
        raise ValueError("LTS releases must be a list of integers")
    if not isinstance(builds, list) or not all(isinstance(x, int) for x in builds):
        raise ValueError("Builds must be a list of integers")
    if not all(0 <= x < count for x in lts):
        raise ValueError("LTS releases must be in range [0, count)")
    if not all(0 <= x < count for x in builds):
        raise ValueError("Builds must be in range [0, count)")
    if len(lts) == 0:
        raise ValueError("LTS list cannot be empty")
    if len(builds) == 0:
        return 0

    total_hops = 0
    for build in builds:
        if build == count - 1:
            continue
        target = count - 1
        current = build
        while current < target:
            next_release = min(current + hop, target)
            # Find the lowest LTS release strictly above current and strictly below next_release
            lts_above_current = None
            for lts_release in lts:
                if lts_release > current and lts_release < next_release:
                    if lts_above_current is None or lts_release < lts_above_current:
                        lts_above_current = lts_release
            if lts_above_current is not None:
                current = lts_above_current
            else:
                current = next_release
        total_hops += 1
    return total_hops
```