Как-то раз одна большая семья решила узнать побольше о своих предках и дальних родственниках. Покопавшись в архивах, им удалось найти сведения об n людях, которые, возможно, имеют с ними родственные связи (включая даже тех, кто жил несколько веков назад). Конечно, полной информации найти не получилось, поэтому для каких-то людей известны оба родителя, для кого-то – только один, а для кого-то сведений о родителях и вовсе не нашлось.
Полученные данные были представлены в виде графа. Вершины графа представляют людей. Направленное ребро, идущее от вершины u к вершине v, означает, что человек с номером u является родителем v. В каждую вершину входит не более двух рёбер. Гарантируется, что циклов в графе нет.
Назовём степенью кровного родства между людьми u и v минимальную длину неориентированного пути между ними, проходящего через их общего предка. Примечание: при этом будем считать, что каждая вершина является предком самой себе. Например, на следующем рисунке для людей 5 и 6 степень родства равна 3 (поскольку кратчайший путь, проходящий через их общего предка, содержит три ребра). Для людей 6 и 3 ответом будет 2, поскольку с учётом примечания их общий предок – это вершина 3, и кратчайший путь содержит 2 ребра.
Напишите программу, которая определит степень кровного родства для заданных пар людей.