Дан неориентированный граф в виде списка смежности graph, стартовая вершина start и конечная end. Верните кратчайшее расстояние (в рёбрах) между ними, или -1, если пути нет.
Сигнатура функции
bfs_shortest_distance(graph: list[list[int]], start: int, end: int) -> int