input: Write a python function to find the shortest path between two cities.
  assert find_shortest_path('A', 'B') == ['A', 'C', 'B']
  assert find_shortest_path('X', 'Z') == ['X', 'Y', 'Z']
  assert find_shortest_path('P', 'R') == ['P', 'Q', 'R']
output: def find_shortest_path(start, end):
      from collections import deque
  
      graph = {
          'A': ['C'],
          'B': ['C'],
          'C': ['A', 'B'],
          'X': ['Y'],
          'Y': ['X', 'Z'],
          'Z': ['Y'],
          'P': ['Q'],
          'Q': ['P', 'R'],
          'R': ['Q']
      }
  
      queue = deque([[start]])
      visited = set()
  
      while queue:
          path = queue.popleft()
          city = path[-1]
  
          if city == end:
              return path
          
          if city not in visited:
              visited.add(city)
              for neighbor in graph[city]:
                  new_path = list(path)
                  new_path.append(neighbor)
                  queue.append(new_path)