/*
TASK:man
LANG:C++
*/
#include <iostream>
#include <algorithm>
using namespace std;
bool used[5001];
int m[5100][2];
int M,i,cnt=0;
void in()
{   
     int a,b;
     cin >> M;
     for (i=1;i<=M;i++)
              {cin >> a >> b;
              m[i][1]=a+1;m[i][2]=b+1;
              }
}
void mq(int a,int b)
{
     int t[15000],z=3,r=0;
          t[1]=a;t[2]=b;
     for (int j=1;j<=M;j++)
          if (used[j]!=1) {  for(int p=1;p<=z;p++)
                                {if (t[p]==m[j][1]) r=1;
                                    else if (t[p]==m[j][2]) r=2;}
                                    
                            
                             if (r==1) {
                                               used[j]=1;
                                               t[z]=m[j][2];
                                               t[z+1]=0;
                                               z++;
                                               j=1;
                                               }
                              else if (r==2)
                                               {
                                                used[j]=1;
                                                t[z]=m[j][1];
                                                t[z+1]=0;
                                                z++;
                                                j=1;
                                                } 
                              }
 sort(t,t+z);                                                                         
 for (int u=2;u<=z;u++)                                          
      if (t[u]!=0 && t[u]!=t[u-1]) cnt++;
}    
     
void solve()
{
     for (i=1;i<=M;i++)
          if (used[i]!=1) {
                           used[i]=1;
                           mq(m[i][1],m[i][2]);
                           } 
}
void out()
{
     cout << cnt<<"\n";
}
int main()
{
    in();
    solve();
    out();  
    return 0;
}            






                
