```python
from typing import *
from collections import *

def path_hops(start: str, goal: str) -> int:
    def reduce_path(path):
        segments = [s for s in path.split('/') if s]
        return '/'.join(segments)

    start_segments = reduce_path(start)
    goal_segments = reduce_path(goal)

    if not start_segments or not goal_segments:
        raise ValueError("Both paths must be non-empty")

    start_index = 0
    goal_index = 0

    while start_index < len(start_segments) and goal_index < len(goal_segments):
        if start_segments[start_index] == '..':
            start_index += 1
        elif goal_segments[goal_index] == '..':
            goal_index += 1
        else:
            if start_segments[start_index] != goal_segments[goal_index]:
                break
            start_index += 1
            goal_index += 1

    common_length = min(len(start_segments), len(goal_segments))

    return (start_index - common_length) + (len(goal_segments) - goal_index)
```