#include<bits/stdc++.h>
using namespace std;
int n,x,y,id,ans,head[100005],d[100005],v[100005],nxt[100005],ver[100005],tot;
void add(int x,int y){
ver[++tot]=y;
nxt[tot]=head[x];
head[x]=tot;
}
void dfs(int u,int dep){
v[u]=1;
for(int i=head[u];i;i=nxt[i]){
int w=ver[i];
if(v[w]) continue;
dfs(w,dep+1);
d[w]=max(d[w],dep+1);
}
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
scanf("%d%d",&x,&y);
add(x,y);
add(y,x);
}
dfs(1,0);
for(int i=1;i<=n;i++){
if(ans<d[i]){
ans=d[i];
id=i;
}
}
memset(v,0,sizeof(v));
dfs(id,0);
for(int i=1;i<=n;i++){
if(ans<d[i]){
ans=d[i];
}
}
cout<<ans;
return 0;
}