#include<bits/stdc++.h>
using namespace std;
int n;
vector<int>g[500100],now;
void dfs(int x,int f,int d){
bool nmd=0;
for(int v:g[x]){
if(v==f)continue;
dfs(v,x,d+1),nmd=1;
}
if(!nmd)now.push_back(d);
}
int main(){
scanf("%d",&n);
for(int i=1,u,v;i<n;i++){
scanf("%d%d",&u,&v);
g[u].push_back(v),g[v].push_back(u);
}
int ans=0;
for(int v:g[1]){
now.clear();
dfs(v,1,1);
sort(now.begin(),now.end());
int p=0;
for(int i=0;i<now.size();i++)p=max(p+1,now[i]);
ans=max(ans,p);
}
return printf("%d",ans),0;
}