#include<iostream>
#include<fstream>
#include<math.h>
#include<vector>
using namespace std;
vector<int> node[100],fcost;
int cost[100];
bool bb[100];

void pathFinding(int n,int c,int d)
{
     if(n==d&&cost[d]>c)cost[d]=c;
     if(cost[n]>=c&&n!=d) {cost[n]=c;
     for(int i= 0; i < node[n].size(); i++)pathFinding(node[n][i],c+1,d);}
 }
 
void reset()
{
     for(int i= 0; i < 100; i++)cost[i]=100000;
     for(int i= 0; i < 100; i++)bb[i]=false;
 }

using namespace std;
int main()
{
    fstream inFile,outFile;
    inFile.open("DATA4.txt",ios::in);
    outFile.open("OUT4.txt",ios::out|ios::trunc);
    int loop=1,a,b,c;
    //-------
    while(loop--)
    {
                inFile>>a;
                for(int i=0;i<a;i++){
                inFile>>b>>c; 
                node[b-1].push_back((c-1));
                bb[b-1]=true;
                bb[c-1]=true;
                }
                for(int i=1;i<100;i++)
                {
                        if(bb){reset();
                        cost[0]=0;
                        pathFinding(0,0,i);
                        fcost.push_back(cost[i]);}
                        }
                a=0;
                for(int i=0;i<fcost.size();i++) if(fcost[i]>a&&fcost[i]!=100000)a=fcost[i];
                outFile<<a<<endl;
                fcost.clear();
                 }
    //-------
    inFile.close();
    outFile.close();
    return 0;
}

