#include <fstream>
#include <vector>
#define DIM 100010
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
vector<int> L[DIM];
int c[DIM],f[DIM],i,n,r,l[DIM],maxim,j,sol,p,u;
int bfs(int start){
p=1;
u=1;
c[1]=start;
f[start]=1;
while(p<=u){
int nod=c[p];
for(i=0;i<L[nod].size();i++)
if(f[L[nod][i]]==0){
f[L[nod][i]]=1;
c[++u]=L[nod][i];
l[L[nod][i]]=1+l[nod];
}
p++;
}
maxim=l[c[u]];
return c[u];
}
int main(){
fin>>n;
while(fin>>i>>j){
L[i].push_back(j);
L[j].push_back(i);
}
r=bfs(1);
for(i=1;i<=n;i++){
f[i]=0;
l[i]=0;
}
bfs(r);
fout<<maxim+1;
return 0;
}