/*
TASK:man
LANG:C++
*/
#include<iostream>
using namespace std;
int n,a[720][720],used[720],maxx,minn=99999,br,dng=1,p;
int k=0;
void dd(int s)
{
     k=0;
     if(dng) return; 
     used[s]=1;
     /*for(int i=1;i<4;i++)
     cout<<i<<" - "<<used[i]<<endl;*/
     br++;
     int i;
     for(i=0;i<=maxx;i++)
                            if(a[s][i]) if(!used[i]) { /*cout<<"vlizame v "<<i<<endl;*/ p=s; dd(i);}
                                        else if(i!=p) k=1;
     //printf("s=%d k=%d br=%d i=%d p=%d n=%d\n",s,k,br,i,p,n);
     if(i==maxx+1) if(k)  {
                           k=0;
                           for(int j=0;j<maxx;j++) 
                                   if(a[s][j]) {
                                                a[s][j]=a[j][s]=0; 
                                                n--; 
                                                dng=1; 
                                                //cout<<endl; 
                                                return; 
                                               }
                          } 
                   else if(br==n) { cout<<br<<endl; /*cout<<"oooooooooooooooooooooooo";*/ exit(1); }
     br--;
}

int main()
{
    int r;
    cin>>n;
    for(int i=0;i<n;i++)
    {
            int t,q;
            cin>>t>>q;
            a[t][q]=a[q][t]=1;
            if(minn>t) minn=t;
            if(minn>q) minn=q;
            if(maxx<t) maxx=t;
            if(maxx<q) maxx=q;
    }
    for(;dng!=0;) { 
                    dng=0; 
                    /*cout<<endl<<minn<<endl<<"nanovo ve"<<endl;
                    for(int i=1;i<=maxx;i++)
                    {for(int j=1;j<=maxx;j++)
                    cout<<a[i][j];
                    cout<<endl;
                    }*/
                    p=-1;
                    br=0;
                    dd(minn); 
                    for(int i=0;i<=maxx;i++)
                      used[i]=0;
                  }
    return 0;
}
