Велосипедные склоны

Эмиль намерен добраться из города 1 в город n на велосипеде. Однако дороги, соединяющие эти города, представляют определённую сложность: каждая из них идёт либо в гору, либо с горы. Если Эмиль переезжает с подъёмной дороги на спуск или наоборот, ему приходится переключать велосипедную передачу, чтобы поездка оставалась комфортной. Эмиля интересует, какое минимальное количество раз во время пути от города 1 до города n ему нужно будет переключить передачу.

Выведите минимальное количество переключений передач, необходимое, чтобы доехать от города 1 до города n.

Входные данные

Первая строка содержит два разделённых пробелом числа n и m (2 ≤ n ≤ 100 000, 1 ≤ m ≤ 100 000), означающие количество городов и количество дорог соответственно.

Каждая из следующих m строк содержит по два разделённых пробелом числа и (, ), которые указывают, что есть дорога между городами и . Дорога из в идёт в гору, а в обратном направлении ( в ) — с горы.

Выходные данные

Программа должна вывести одно число — минимальное количество переключений передач, которое понадобится Эмилю на пути от города 1 до города n.

Примеры

Входные данные

Выходные данные

5 5
1 2
2 3
5 3
4 2
4 5

1

3 3
1 2
2 3
3 1

0

Constraints

Time limit: 6 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue