/*
TASK:man
LANG:C++
*/
#include<iostream>
using namespace std;
long long a[3][25000];
bool used[15000];
inline long long search(int x,int y)
{
    long long n=1,k=a[0][0];
    while(n<k)
    {
              int s=(k-n+1)/2+n-1;
              if(x>a[1][s])n=s+1;
              if(x<a[1][s])k=s-1;
              if(x==a[1][s])
              {
                            if(y>a[2][s])n=s+1;
                            if(y<a[2][s])k=s-1;
                            if(y==a[2][s])return s;
              }
    }
    return 0;
}
inline void sortirane()
{
long long i,j,c;
for(i=1;i<=a[0][0];i++)
{
                       for(j=i+1;j<=a[0][0];j++)
                       {
                                              if(a[1][i]>a[1][j])
                                              {
                                                                 c=a[1][i];
                                                                 a[1][i]=a[1][j];
                                                                 a[1][j]=c;
                                                                 c=a[2][i];
                                                                 a[2][i]=a[2][j];
                                                                 a[2][j]=c;
                                              }
                                              if(a[1][i]==a[1][j] && a[2][i]>a[2][j])
                                              {
                                                                 c=a[1][i];
                                                                 a[1][i]=a[1][j];
                                                                 a[1][j]=c;
                                                                 c=a[2][i];
                                                                 a[2][i]=a[2][j];
                                                                 a[2][j]=c;
                                              }
                       }
}
}
int main()
{
    long long m,x,y,i,j,f,of=0;
    bool p;
    a[0][0]=0;
    cin>>m;
    for(i=1;i<=m;i++)
    {
                    cin>>x>>y;
                    if(!used[x])
                    {
                                used[x]=1;
                                of++;
                                a[0][0]++;
                                a[1][a[0][0]]=x;
                                a[2][a[0][0]]=-1;
                    }
                    if(!used[y])
                    {
                                used[y]=1;
                                a[0][0]++;
                                of++;
                                a[1][a[0][0]]=y;
                                a[2][a[0][0]]=-1;
                    }
                    a[0][0]++;
                    a[1][a[0][0]]=x;
                    a[2][a[0][0]]=y;
                    a[0][0]++;
                    a[1][a[0][0]]=y;
                    a[2][a[0][0]]=x;
    }
    sortirane();
    long long br=(a[0][0]-of)/2;
    for(i=1;i<=a[0][0];i++)
    {
                    if(a[2][i]==-1)continue;
                    if(a[2][i]<a[1][i])continue;
                    long long l=search(a[1][i],-1);
                    bool flag=0;
                    for(j=l+1;j<=a[0][0];j++)
                    {
                                           if(a[1][j]!=a[1][i])break;
                                           if(a[2][j]==a[2][i] && flag)
                                           {
                                                               br--;
                                                               break;
                                           }
                                           if(a[2][j]==a[2][i])flag=1;
                                           if(search(a[2][i],a[2][j]))
                                           {
                                                                      
                                                                      br--;
                                                                      break;
                                           }
                    }
                    
    }
    cout<<br<<endl;
}
