/*
TASK:man
LANG:C++
*/
#include<iostream.h>
long m,br,x,y,a[10005][10005],b[5005][5],s1,s2,min,max,i,j,c[15005];
int main()
{ cin>>m;
  min=15005;
  max=-15005;
  for(i=1; i<=m; i++)
   { cin>>x>>y;
     b[i][1]=x;
     b[i][2]=y;
     if(x<min)
      min=x;
     if(y<min)
      min=y;
     if(x>max)
      max=x;
     if(y>max)
      max=y;
     c[x]=1;
     c[y]=1; 
   }
  a[b[1][1]][b[1][2]]=1;
  a[b[1][2]][b[1][1]]=1;
  br=1;
  for(i=2; i<=m; i++)
   { s1=b[i][1];
     s2=b[i][2];
     if(a[s1][s2]==0 && a[s2][s1]==0)
      { a[s1][s2]=1;
        a[s2][s1]=1;
        br++;
        for(j=min; j<=max; j++)
         { if(a[s1][j]==1 && c[j]==1)
            { a[s2][j]=1;
              a[j][s2]=1;
            }
           if(a[s2][j]==1 && c[j]==1)
            { a[s1][j]=1;
              a[j][s1]=1;
            } 
         } 
      }
   }
  cout<<br<<endl;
  return 0;
}
