"""CS 149 Project 3, Part C (recursion).

Author: YOUR NAME
Version: THE DATE
"""


def load_data(path):
    """Load data from a file and map user names to friends' names.

    Args:
        path (str): The file path to the JSON file containing the data.

    Returns:
        dict: Maps each user's name to a list of their friends' names
              or None if the user has no friends.
    """


def influence(data, user, visited=None):
    """Count the number of unique friends reachable from a user.

    Args:
        data (dict): Maps each user's name to a list of their friends'
                     names or None if the user has no friends.
        user (str): Name of the user whose influence is to be counted.
        visited (set): Users already visited during recursion.

    Returns:
        int: The number of unique friends reachable from the user.
    """


def separation(data, user1, user2, visited=None, depth=0):
    """Find the degrees of separation between two users.

    Args:
        data (dict): Maps each user's name to a list of their friends'
                     names or None if the user has no friends.
        user1 (str): Name of the starting user.
        user2 (str): Name of the ending user.
        visited (set): Users already visited during recursion.
        depth (int): Current number of recursive calls.

    Returns:
        int: Degrees of separation between user1 and user2,
             or -1 if user2 is not reachable from user1.
    """
