#include <iostream>
#include <cstring>
#include <vector>
#include <unordered_set>
#include<map>
using namespace std;
map<int,int> s;
int find(int x){
while(s[x]>0){
x=s[x];
}
return x;
}
void union1(int r1,int r2){
s[r1]=r2;
}
int main() {
int a, b;
while (cin >> a >> b) { // 注意 while 处理多个 case
int r1=find(a),r2=find(b);
if(r1!=r2) union1(r1,r2);
}
int res=0;unordered_set<int> ans;
for(auto it:s){
ans.insert(find(it.first));
}
cout<<ans.size();
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号