#include <cstdio> #include <cstdlib> const int MAXN(100010); struct FIND_SET { int fa[MAXN], rank[MAXN]; void init(int n) { for(int i = 1; i <= n; ++i) { fa[i] = i; rank[i] = 1; } } int find(int sour) { return sour == fa[sour]? sour: fa[sour] = find(fa[sour]); } bool Union(int sour1, int sour2) { int fa1 = find(sour1); int fa2 = find(sour2); if(fa1 == fa2) return false; if(rank[fa1] >= rank[fa2]) { rank[fa1] += rank[fa2]; fa[fa2] = fa1; } else { rank[fa2] += rank[fa1]; fa[fa1] = fa2; } return true; } }; FIND_SET fs; int main() { while(true) { int A, B, ans(0); if(scanf("%d", &A) == EOF) break; fs.init(100000); while(A != -1) { scanf("%d", &B); if(!fs.Union(A, B)) ++ans; scanf("%d", &A); } printf("%d\n", ans); } return 0; }