Вам потрібно навчитись опрацьовувати 3 типи запитів:
Додати ребро в граф (link).
Видалити ребро з графа (cut).
Для двох вершинам a та b повернути довжину шляху між ними (або -1, якщо вони лежать у різних компонентах зв'язності) (get).
Спочатку граф порожній (містить N вершин, не містить ребер). Гарантується, що у довільний момент часу граф є лісом. При додаванні ребра гарантується, що його зараз у графі немає. При видаленні ребра гарантується, що воно вже додано.
Числа N та M (1 ≤ N ≤ 10^5+1, 1 ≤ M ≤ 10^5) — кількість вершин у дереві і, відповідно, запитів. Далі M рядків, у кожному рядку команда (link або cut, або get) та 2 числа від 1 до N — номери вершин у запиті.
У вихідний файл для кожного запиту get виведіть одне число — відстань між вершинами, або -1, якщо вони лежать у різних компонентах зв'язності.