#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,e,f,g[100005][2],ans=0;
vector<int>v[100005];
bool vis[100005];
int dfs1(int x,int y){
vis[x]=1;
g[x][0]=0;
g[x][1]=0;
int ret=0;
for(int i=0;i<v[x].size();i++){
if(v[x][i]!=y){
ret=max(ret,dfs1(v[x][i],x));
if(g[v[x][i]][0]>g[x][0]){
g[x][1]=g[x][0];
g[x][0]=g[v[x][i]][0];
}
else if(g[v[x][i]][0]>g[x][1]){
g[x][1]=g[v[x][i]][0];
}
}
}
int gmm=max(ret,g[x][0]+g[x][1]+1);
g[x][0]++;
return gmm;
}
int main(){
cin>>a>>b;
for(int i=0;i<b;i++){
cin>>c>>d;
v[c].push_back(d);
v[d].push_back(c);
}
for(int i=1;i<=a;i++){
if(vis[i]==0){
ans+=dfs1(i,i);
}
}
cout<<ans;
}