#include <bits/stdc++.h>
using namespace std;
#define MAX 1000
int posecen[MAX];
int d[MAX];
int minIndeks(bool m[],int N)
{    int mini = MAX, k = -1;
    for(int u=1; u<=N; u++)
        {
            if(!m[u] && d[u]<=mini)
            {
                k=u;
                mini = d[u];
            }
        }
    return k;
}

void dijkstra(int a[][MAX], int s,int N)
{
    bool m[N];

    for(int u=1; u<=N; u++)
        {
            d[u] = MAX;
            m[u] = false;
        }
    d[s] = 0;

    for(int i=1; i<=N-1; i++)
    {
        int u = minIndeks(m,N);
        if(u == -1)
            break;
        m[u] = true;

        for(int v=1; v<=N; v++)
            {
                if(!m[v] && a[u][v]>0)
                {
                    if(d[u]!=MAX && d[u]+a[u][v]<d[v])
                    {
                        d[v] = d[u] + a[u][v];
                    }
                }

            }
     }
}


void BFS(int graf[][MAX],int n,int i){

    int x=1;
    queue <int> q;
    q.push(i);
    posecen[i]=1;
    while(!q.empty()){
            int f=q.front();
        for(int j=1;j<=n;j++){
            if(graf[f][j]==1 && posecen[j]==0)
            {
               if(x==1){ posecen[j]=2;x=x*(-1);}else{posecen[j]=1;x=x*(-1);}
                q.push(j);
            }
        }
        q.pop();

    }
}
int main()
{

    int n,x,y;
    cin>>n;
    int a[MAX][MAX],najveci[n],najv=0;
    for(int i=1;i<=n;i++)
    {
        najveci[i]=0;
        for(int j=1;j<=n;j++)
        {
            a[i][j]=0;
        }
    }
    for(int j=1;j<n;j++)
    {
        cin>>x>>y;
        najveci[x]++;
        najveci[y]++;
        a[x][y]=1;
        a[y][x]=1;
    }
    for(int j=1;j<=n;j++)
    {
        if(najveci[j]>najv)
        {
            najv=j;
        }
    }
    BFS(a,n,najv);
    int maxrast=-1;
    for(int i=1;i<=n;i++)
    {
        dijkstra(a,i,n);
        for(int j=i;j<=n;j++)
        {
            if(posecen[i]==1 && posecen[j]==1)
            {
                if(maxrast<d[j])
                {
                    maxrast=d[j];
                }
            }
        }
    }
    cout<<maxrast;
}