#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("darb.in");
ofstream fout ("darb.out");
int n,i,x,y,v[100001],nodmax,maxim;
vector <int> L[100001];
void dfs(int nod, int niv){
v[nod]=1;
if(niv>maxim){
maxim=niv;
nodmax=nod;
}
for(int i=0;i<L[nod].size();i++){
int nodv=L[nod][i];
if(v[nodv]==0)
dfs(nodv,niv+1);
}
}
int main(){
fin>>n;
for(i=1;i<=n-1;i++){
fin>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
dfs(1,1);
x=nodmax;
nodmax=0;
maxim=0;
for(i=1;i<=n;i++)
v[i]=0;
dfs(x,1);
fout<<maxim;
}