/*
TASK:man
LANG:C++
*/
#include<iostream.h>
int a[5000][2],conn[10000],m,p=1,x;
int max_used()
{int i,j,k,l,br=0,biggest=-1,g;
for(i=0;i<m;i++)
for(j=0;j<2;j++) {
br=0;
for(k=0;k<m;k++)
for(l=0;l<2;l++)
if(a[i][j]==a[k][l])
br++;
if(br>biggest) {biggest=br;g=a[i][j];}
}
return g;
}
int find(int i)
{int j,k,l,f1=0,f2=0;
for(j=0;j<p;j++)
if(a[i][0]==conn[j]) {f1=1;break;}
for(j=0;j<p;j++)
if(a[i][1]==conn[j]) {f2=1;break;}
if(!f1 && f2) {x=a[i][0];return 1;}
if(f1 && !f2) {x=a[i][1];return 1;}
if(f1 && f2) return 0;
if(!f1 && !f2) return -1;
}
int main()
{int i,j,max,br=0;
cin>>m;
for(i=0;i<m;i++)
for(j=0;j<2;j++)
cin>>a[i][j];
max=max_used();conn[0]=max;
for(i=0;i<m;i++)
for(j=0;j<2;j++)
if(a[i][j]==max)
{conn[p]=a[i][abs(j-1)];p++;br++;}
for(i=0;i<m;i++) {
if(find(i)>0) {conn[p]=x;p++;br++;}
if(find(i)<0) {conn[p]=a[i][0];p++;conn[p]=a[i][1];p++;br++;}
}
cout<<br<<'\n';
return 0;
}
