#include<bits/stdc++.h>
using namespace std;
struct node
{
vector<int> in;
vector<int> out;
};
node tree[100005];
int maxx=0;
int l=1;
void dfs(int num)
{
l++;
if(tree[num].out.size()==0)
{
if(l>=maxx) maxx=l;
l=1;
return;
}
for(int i=1;i<=(tree[num].out).size();i++)
{
dfs(tree[num].out[i]);
}
return;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n-1;i++)
{
int a1,a2;
cin>>a1>>a2;
(tree[a1].out).push_back(a2);
(tree[a2].in).push_back(a1);
}
dfs(1);
cout<<maxx<<endl;
return 0;
}