/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Scanner sc
= new Scanner
(System.
in); int n = sc.nextInt();
int m = sc.nextInt();
List<List<Integer>> adj = new ArrayList<>();
for(int i=0; i<=n;i++){
adj.add(new ArrayList<>());
}
for(int i=0; i<m; i++){
int u = sc.nextInt();
int v = sc.nextInt();
adj.get(u).add(v);
adj.get(v).add(u);
}
int []parent = new int[adj.size()];
int []height = new int[adj.size()];
boolean []visited = new boolean[adj.size()];
heightOfEachNode(1,adj,parent,visited,height);
}
public static void heightOfEachNode(int node,List<List<Integer>> adj,int[] par,boolean[] vis,int []height){
vis[node] = true;
for(int x: adj.get(node)){
if(vis[x] == false){
par[x] = node;
heightOfEachNode(x,adj,par,vis,height);
}
}
int h =0;
for(int child: adj.get(node)){
if(child == par[node]){
// it's parent node , we have to traverse all children of child node
}else{
h
= Math.
max(h,height
[child
]); }
}
height[node] = h+1;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCWludCBuID0gc2MubmV4dEludCgpOwoJCWludCBtID0gc2MubmV4dEludCgpOwoJCUxpc3Q8TGlzdDxJbnRlZ2VyPj4gYWRqID0gbmV3IEFycmF5TGlzdDw+KCk7CgkJZm9yKGludCBpPTA7IGk8PW47aSsrKXsKCQkJYWRqLmFkZChuZXcgQXJyYXlMaXN0PD4oKSk7CgkJfQogCgkJZm9yKGludCBpPTA7IGk8bTsgaSsrKXsKCQkJaW50IHUgPSBzYy5uZXh0SW50KCk7CgkJCWludCB2ID0gc2MubmV4dEludCgpOwoJCQlhZGouZ2V0KHUpLmFkZCh2KTsKCQkJYWRqLmdldCh2KS5hZGQodSk7CgkJfQoJCWludCBbXXBhcmVudCA9IG5ldyBpbnRbYWRqLnNpemUoKV07CgkJaW50IFtdaGVpZ2h0ID0gbmV3IGludFthZGouc2l6ZSgpXTsKCQlib29sZWFuIFtddmlzaXRlZCA9IG5ldyBib29sZWFuW2Fkai5zaXplKCldOwoJCWhlaWdodE9mRWFjaE5vZGUoMSxhZGoscGFyZW50LHZpc2l0ZWQsaGVpZ2h0KTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oQXJyYXlzLnRvU3RyaW5nKGhlaWdodCkpOwogCgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBoZWlnaHRPZkVhY2hOb2RlKGludCBub2RlLExpc3Q8TGlzdDxJbnRlZ2VyPj4gYWRqLGludFtdIHBhcixib29sZWFuW10gdmlzLGludCBbXWhlaWdodCl7CgkJdmlzW25vZGVdID0gdHJ1ZTsKCQkKCQlmb3IoaW50IHg6IGFkai5nZXQobm9kZSkpewoJCQlpZih2aXNbeF0gPT0gZmFsc2UpewoJCQkJcGFyW3hdID0gbm9kZTsKCQkJCWhlaWdodE9mRWFjaE5vZGUoeCxhZGoscGFyLHZpcyxoZWlnaHQpOwoJCQl9CgkJfQoJCQlpbnQgaCA9MDsKCQlmb3IoaW50IGNoaWxkOiBhZGouZ2V0KG5vZGUpKXsKCQkJaWYoY2hpbGQgPT0gcGFyW25vZGVdKXsKCQkJCS8vIGl0J3MgcGFyZW50IG5vZGUgLCB3ZSBoYXZlIHRvIHRyYXZlcnNlIGFsbCBjaGlsZHJlbiBvZiBjaGlsZCBub2RlCgkJCX1lbHNlewoJCQkJaCA9IE1hdGgubWF4KGgsaGVpZ2h0W2NoaWxkXSk7CgkJCX0KCQl9CgkJCgkJaGVpZ2h0W25vZGVdID0gaCsxOwoJCQoJCQoJCQoJfQp9