# include <iostream>
# include <vector>
# define pb push_back
using namespace std;
vector < vector<int> > graph(10001,vector<int>());
int visited[10001];
int total[10001];
int max1,index;
void addEdge(int node1,int node2){
graph[node1].pb(node2);
graph[node2].pb(node1);
total[node1]++;
total[node2]++;
}
void dfs(int k,int len){
if(len>max1){
max1=len;
index=k;
}
visited[k]=1;
for(int i=0;i<graph[k].size();i++){
if(visited[graph[k][i]]==0){
dfs(graph[k][i],len+1);
}
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=10000;i++){
visited[i]=0;
total[i]=0;
}
max1=-1;
int u,v;
for(int i=1;i<=n;i++){
//addEdge()
cin>>u>>v;
addEdge(u,v);
}
int i;
for(i=1;i<=10000;i++){
if(total[i]==1)
break;
}
dfs(i,0);
for(int i=1;i<=10000;i++){
visited[i]=0;
//count[i]=0;
}
int ans=max1;
max1=-1;
dfs(index,0);
if(max1>ans)
cout<<max1<<endl;
else
cout<<ans<<endl;
return 0;
}
IyBpbmNsdWRlIDxpb3N0cmVhbT4KIyBpbmNsdWRlIDx2ZWN0b3I+CiMgZGVmaW5lIHBiIHB1c2hfYmFjawp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yIDwgdmVjdG9yPGludD4gPiBncmFwaCgxMDAwMSx2ZWN0b3I8aW50PigpKTsKaW50IHZpc2l0ZWRbMTAwMDFdOwppbnQgdG90YWxbMTAwMDFdOwppbnQgbWF4MSxpbmRleDsKdm9pZCBhZGRFZGdlKGludCBub2RlMSxpbnQgbm9kZTIpewogICAgZ3JhcGhbbm9kZTFdLnBiKG5vZGUyKTsKICAgIGdyYXBoW25vZGUyXS5wYihub2RlMSk7CiAgICB0b3RhbFtub2RlMV0rKzsKICAgIHRvdGFsW25vZGUyXSsrOwp9CnZvaWQgZGZzKGludCBrLGludCBsZW4pewogICAgaWYobGVuPm1heDEpewogICAgICAgIG1heDE9bGVuOwogICAgICAgIGluZGV4PWs7CiAgICB9CiAgICB2aXNpdGVkW2tdPTE7CiAgICBmb3IoaW50IGk9MDtpPGdyYXBoW2tdLnNpemUoKTtpKyspewogICAgICAgIGlmKHZpc2l0ZWRbZ3JhcGhba11baV1dPT0wKXsKICAgICAgICAgICAgZGZzKGdyYXBoW2tdW2ldLGxlbisxKTsKICAgICAgICB9CiAgICB9Cn0KaW50IG1haW4oKXsKICAgIGludCBuOwogICAgY2luPj5uOwogICAgZm9yKGludCBpPTE7aTw9MTAwMDA7aSsrKXsKICAgICAgICB2aXNpdGVkW2ldPTA7CiAgICAgICAgdG90YWxbaV09MDsKICAgIH0KICAgIG1heDE9LTE7CiAgICBpbnQgdSx2OwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgIC8vYWRkRWRnZSgpCiAgICAgICAgY2luPj51Pj52OwogICAgICAgIGFkZEVkZ2UodSx2KTsKICAgIH0KICAgIGludCBpOwogICAgZm9yKGk9MTtpPD0xMDAwMDtpKyspewogICAgICAgICAgICBpZih0b3RhbFtpXT09MSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgfQogICAgZGZzKGksMCk7CiAgICBmb3IoaW50IGk9MTtpPD0xMDAwMDtpKyspewogICAgICAgIHZpc2l0ZWRbaV09MDsKICAgICAgICAvL2NvdW50W2ldPTA7CiAgICB9CiAgICBpbnQgYW5zPW1heDE7CiAgICBtYXgxPS0xOwogICAgZGZzKGluZGV4LDApOwogICAgaWYobWF4MT5hbnMpCiAgICAgICAgY291dDw8bWF4MTw8ZW5kbDsKICAgIGVsc2UKICAgICAgICBjb3V0PDxhbnM8PGVuZGw7CiAgICByZXR1cm4gMDsKfQo=