#include <cstdio>
#include <iostream>
#include <cstring>
#define S 10000005
using namespace std;
int n,m;
struct mmm{
int ne,to;
}e[S*2];
int h[S],cnt;
void add(int u,int v){
e[++cnt].ne=h[u];
e[cnt].to=v;
h[u]=cnt;
}
int x,y;
int d[S],val[S];
int now,rt;
void dfs(int u,int fa){
for(int i=h[u];i;i=e[i].ne){
int v=e[i].to;
if(v==fa)continue;
d[v]=d[u]+val[v]-1;
if(d[v]>now){
now=d[v];rt=v;
}
dfs(v,u);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;++i){
scanf("%d%d",&x,&y);
val[x]++;
val[y]++;
add(x,y);
add(y,x);
}
d[1]=val[1];
dfs(1,0);
memset(d,0,sizeof(d));
d[rt]=val[rt];
dfs(rt,0);
if(n!=1)printf("%d\n",d[rt]+1);
else cout<<1<<endl;
}