def find_shortest_path(orbit_graph, obj_start, obj_end, path=[]):
    """Find the shortest path between the start and end objects in a graph

    This code is copied from the Python Patterns - Implementing Graphs essay at
    https://www.python.org/doc/essays/graphs. It is gratefully re-used under
    the PSF license.

    Parameters
    ----------
    orbit_graph : dict
        A dictionary containing every planet (object) as keys, and the list of
        objects that they connect to (either orbiting or being orbited by)
        for the values.
    obj_start : str
        The name of the starting object
    obj_end : str
        The name of the end object
    path : list
        Objects that must be traversed in the path from obj_start to obj_end,
        Default: []

    Returns
    -------
    shortest : list
        The shortest path between two objects. This path contains both the
        start and end objects.
    """
    path = path + [obj_start]

    # If the start object is the same as the end object then return the path
    # right at the start! It will be 1 element long.
    if obj_start == obj_end:
        return path

    # If the start object is not in the graph then return None
    if obj_start not in orbit_graph:
        return None

    # We're going to find the shortest path here, start by calling it None
    shortest = None

    # Step through the nodes from the start object
    for node in orbit_graph[obj_start]:

        # If the node is not in the path then call **this same function** to
        # find the shortest path between that object and the end object!
        # pass the path we've created to that function.
        if node not in path:
            newpath = find_shortest_path(orbit_graph, node, obj_end, path)

            # If we find a new path compare it to the length of the shortest
            # path. If it is shorter then replace "shortest" with this new path
            if newpath:
                if not shortest or len(newpath) < len(shortest):
                    shortest = newpath

    return shortest