#include <iostream>
#include<bits/stdc++.h>

using namespace std;
//秩优化的map并查集
map<int,int>father;
map<int,int>height;
int find(int x){
    if(father.find(x)!=father.end()){
        if(father[x]!=x){
            father[x]=find(father[x]);
        }
    }
    else{
        father[x]=x;
        height[x]=0;
    }
    return father[x];
}
void Union(int a,int b){
    int a1=find(a),b1=find(b);
    if(a!=b){
        if(height[a1]>height[b1]){
            father[b1]=a1;
        }
        else if(height[b1]>height[a1]){
            father[a1]=b1;
        }
        else{
            father[a1]=b1;
            height[b1]++;
        }
    }
}
int main() {
    int a, b;
    while (cin >> a >> b) { // 注意 while 处理多个 case
        Union(a,b);

    }
    int sum=0;
    for(auto it=father.begin();it!=father.end();it++){
        if(it->first==it->second){
            sum++;
        }
    }
    cout<<sum<<endl;

}
// 64 位输出请用 printf("%lld")