友谊纽带
题号:NC220126
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小航是计算机系的学生,但他并不喜欢自己的专业。在课余时间,小航喜欢研究社会学的内容,在他经过了多年的研究后,他发现了一个伟大的定理:世界上任意两个人之间最少需要k个友谊纽带就可以全部连接。他需要向世界公布这个研究成果,但是他还没有对这个定理进行验证,由于他急着陪女朋友,所以将验证这个定理的任务交给了他的朋友小杰和小坤。
由于人数太多,而导致任务量非常大,所以小杰和小坤找到了你,请你帮助他们验证这个结论。

输入描述:

第一行包含两个整数n和m,n为总共的人数,m为关系的对数。
接下来m行包含两个整数a和b,表示a和b是朋友关系。

输出描述:

如果n个人当中的某些人无法成为朋友,则输出-1。否则输出一个k,表示最少需要k个纽带就可以连接任意两个朋友(每两个人之间最多有一条纽带)。
示例1

输入

复制
5 4
1 2
2 3
3 4
4 5

输出

复制
4

说明

1号朋友和5号朋友需要最多4个纽带才能连接
示例2

输入

复制
5 3
1 2
2 3
3 4

输出

复制
-1

说明

1号朋友和5号朋友无法通过友谊纽带连接

备注: