/*
TASK: man
LANG: c++
*/
#include<iostream>
using namespace std;
struct rib
{
 int d1;
 int d2;       
};
rib sr[100010];
int save_sol[10050];
int m,br,sol,y,key;
int bin_search(int a,int b)
{
 int l=1,r=br,m;
 while(r>l) 
  {
   if(a==sr[r].d1 && b==sr[r].d2) return r;
   if(a==sr[l].d1 && b==sr[l].d2) return l;
   m=(r+l)/2;
   if(a==sr[m].d1 && b==sr[m].d2) return m;
   if(a==sr[m].d1)
    {if(b<sr[m].d2) r=m-1;
      else l=m+1; }
   if(a>sr[m].d1) l=m+1;
   if(a<sr[m].d1) r=m-1;
  }    
 return -1; 
}
int cmp(rib a,rib b)
{
 if(a.d1==b.d1) 
  return (a.d2<b.d2);
 return (a.d1<b.d1);     
}
int main()
{
 cin>>m;
 sol=m;
 int mas=0;
 for(int i=1;i<=m;i++)
  {
   cin>>sr[i].d1>>sr[i].d2;
   if(sr[i].d1>sr[i].d2) swap(sr[i].d1,sr[i].d2);
   if(sr[i].d1>mas)mas=sr[i].d1;
  }   
 for(int i=0;i<=mas+1;i++)
  {sr[m+i+1].d1=i; sr[m+i+1].d2=-1; }
 sort(sr+1,sr+m+1+1+mas,cmp);
 br=m+mas+1; 
 //for(int i=1;i<=m+mas+1;i++)
 // cout<<sr[i].d1<<' '<<sr[i].d2<<endl;
 int i=1,p,q;
 int f=bin_search(mas,-1);
 while(q<f)
  {
   q=bin_search(sr[i].d1,-1);
   p=bin_search(sr[i].d1+1,-1); 
   for(int k=q+1;k<p-1;k++)
    for(int w=k+1;w<p;w++)
     {
      y=bin_search(sr[k].d2,sr[w].d2);
      if(y!=-1) 
       {
        key=0;
        for(int i=1;i<=save_sol[0];i++)
         if(save_sol[i]==y)
          key=1;
        if(!key)   
         {
          save_sol[++save_sol[0]]=y;
          sol--;
         } 
       }
     } 
   i=p;  
  }
 cout<<sol<<endl; 
 return 0;    
}
