input: Write a function to find the shortest path between two nodes in a graph.
  assert find_shortest_path(nodeA, nodeB) == [nodeA, nodeC, nodeB]
  assert find_shortest_path(nodeD, nodeE) == [nodeD, nodeF, nodeG, nodeE]
  assert find_shortest_path(nodeH, nodeI) == [nodeH, nodeJ, nodeK, nodeI]
output: def find_shortest_path(start_node, end_node):
      from collections import deque
  
      def bfs(start, end):
          queue = deque([(start, [start])])
          visited = set()
          
          while queue:
              current, path = queue.popleft()
              if current in visited:
                  continue
              visited.add(current)
              if current == end:
                  return path
              
              for neighbor in current.neighbors:
                  if neighbor not in visited:
                      queue.append((neighbor, path + [neighbor]))
          return []
  
      return bfs(start_node, end_node)