Ваш друг разрабатывает компьютерную игру. Он уже решил, каким должен быть игровой мир — он будет состоять из n локаций, соединенных m двусторонними переходами. Система переходов устроена таким образом, что с их помощью можно добраться из любой локации в любую другую.
Естественно, некоторые переходы будут охраняться монстрами (если можно пройти куда угодно без боя, то это слишком просто и совсем не весело, так ведь?). Некоторые важные переходы будут охраняться очень сильными монстрами, требующими серьёзной подготовки и разработки специальной боевой тактики (обычно таких монстров в играх называют боссами). Ваш друг как раз хочет, чтобы вы ему помогли расставить боссов по переходам.
Игра начнётся в локации s и закончится в локации t, но эти локации пока не определены. После того, как эти две локации будут выбраны, ваш друг хочет поставить босса в каждый такой переход, что, не пользуясь этим переходом, невозможно попасть из локации s в локацию t. Чем больше боссов будет в игре, тем лучше (чем сложнее игра, тем она веселее, так ведь?), и поэтому ваш друг попросил вас определить максимально возможное количество боссов, принимая во внимание любой возможный выбор локаций s и t.
В первой строке заданы два целых числа n и m (2≤n≤3⋅105, n−1≤m≤3⋅105) — количество локаций и переходов, соответственно.
Затем следуют m строк, каждая содержит два числа x и y (1≤x,y≤n, x≠y), обозначающие локации, соединенные очередным переходом.
Гарантируется, что никакая пара локаций не соединена напрямую более чем одним переходом, и что можно из любой локации достичь любой другой локации, пользуясь только этими переходами.
Выведите одно число — максимальное количество боссов, которое можно поставить, по всем возможным парам локаций s и t.
5 5
1 2
2 3
3 1
4 1
5 2
2
4 3
1 2
4 3
3 2
3