#include <bits/stdc++.h>
#define ll long long

using namespace std;

int n;
int sol, maxd;
vector<int> graf[100010];
int mark[100010];
bool mark2[100010];

void dfs(int cvor, int t)
{
    mark2[cvor]=true;
    if(mark[cvor]==1)
        maxd=max(maxd,t);
    for(int i=0;i<graf[cvor].size();i++)
        if(!mark2[graf[cvor][i]])
            dfs(graf[cvor][i],t+1);
}

int generisi(int t)
{
    if(t==n)
    {
        maxd=0;
        for(int i=0;i<n;i++)
            if(mark[i]==1)
            {
                for(int j=1;j<=n;j++) mark2[j]=false;
                dfs(i+1,0);
            }
        return maxd;
    }
    if(t%2==0)
    {
        int teksol=n;
        for(int i=1;i<=n;i++)
            if(mark[i]==0)
            {
                mark[i]=1;
                teksol=min(teksol,generisi(t+1));
                mark[i]=0;
            }
        return teksol;
   }
   else
   {
        int teksol=0;
        for(int i=1;i<=n;i++)
            if(mark[i]==0)
            {
                mark[i]=2;
                teksol=max(teksol,generisi(t+1));
                mark[i]=0;
            }
        return teksol;
   }
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);

	cin>>n;
	int u,v;
	for(int i=0;i<n-1;i++)
    {
        cin>>u>>v;
        graf[u].push_back(v);
        graf[v].push_back(u);
    }


    cout<<generisi(0);

}