#include<iostream> using namespace std; const int maxn=1000000; int father[maxn]; int height[maxn]; bool visit[maxn]; void initial(){ for(int i=0;i<=maxn;i++){ father[i]=i; height[i]=0; visit[i]=false; } } int find(int x){ if(x!=father[x]){ father[x]=find(father[x]); } return father[x]; } void Union(int x,int y){ x=find(x); y=find(y); if(x!=y){ if(height[x]<height[y]){ father[x]=y; } else if(height[x]>height[y]){ father[y]=x; } else{ father[y]=x; height[x]++; } } } int main(){ int x,y; initial(); while(cin>>x>>y){ Union(x,y); visit[x]=true; visit[y]=true; } int answer=0; for(int i=0;i<maxn;i++){ if(visit[i]){ if(father[i]==i){ answer++; } } } cout<<answer<<endl; }