/*
TASK:man
LANG:C++
*/
#include<iostream>
using namespace std;
int a[2500][2500],br[2500],brh=0,x,y,o=0,t=0,p=0,n,u,r,e;
void cpy1(int g,int h)
{
         //system("pause"); cout<<g<<" "<<h<<endl;
         int i,j,q;
         for (i=0;i<br[g];i++)
             {for (j=0;j<br[h];j++)
                 if(a[g][i]==a[h][j]) {q=1;break;}
             if(q!=1){a[h][br[h]]=a[g][i];br[h]++;}
             q=0;
             }
         br[g]=0;
}

int main()
{
    int i,j,k;
    cin>>n;
    scanf("%d %d",&x,&y);
    a[brh][br[brh]]=x;br[brh]++;
    a[brh][br[brh]]=y;br[brh]++;
    brh++;
    for (i=1;i<n;i++)
        {scanf("%d %d",&x,&y);
        for (j=0;j<brh;j++)
            {
            for (k=0;k<br[j];k++)
                {
                if(a[j][k]==x)t=1; 
                if(a[j][k]==y)p=1; 
                }
            if ((t==1&&p==0)||(t==0&&p==1))
               {if(p==0) {a[j][br[j]]=y;br[j]++; {for (r=j+1;r<brh;r++) for (e=0;e<br[r];e++) if(a[r][e]==y) {cpy1(r,j);break;} }}
               if(t==0) {a[j][br[j]]=x;br[j]++; {for (r=j+1;r<brh;r++) for (e=0;e<br[r];e++) if(a[r][e]==x) {cpy1(r,j);break;} } }
               }
            if(t==1||p==1)u=1;
            t=0;p=0;
            }
            if (u==0) {
                            a[brh][br[brh]]=x;br[brh]++;
                            a[brh][br[brh]]=y;br[brh]++;
                            brh++;
                            }
            u=0;
            
        }
    for (i=0;i<brh;i++)
          {if(br[i]!=0)o+=br[i]-1;}
    cout<<o<<endl;
/*    for (i=0;i<brh;i++)
        {cout<<"kolona"<<i<<" ";
                       for (j=0;j<br[i];j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
        }
*/  
    return 0;
    }
