#include <stdio.h>
#include <string.h>
int father[1000];
int height[1000];
// Add proper parameter types in function declarations
void intial(int n) {
for(int i = 0; i < n; i++) {
father[i] = i;
height[i] = 0;
}
}
int Find(int n) {
if(n != father[n]) {
father[n] = Find(father[n]);
}
return father[n];
}
void Uion(int a, int b) {
a = Find(a);
b = Find(b);
if (a != b) {
if (height[a] > height[b]) {
father[b] = a; // Fix assignment
}
else if (height[a] < height[b]) {
father[a] = b; // Fix assignment
}
else {
father[a] = b;
height[b]++;
}
}
}
int main() {
int a, b, c, d;
while(scanf("%d %d", &a, &b) != EOF) {
if (a == 0){
break;
}
int ans = -1;
intial(a);
for(int i = 0; i < b; i++) {
scanf("%d %d", &c, &d);
Uion(c, d);
}
for(int i = 0; i < a; i++) { // Change b to a
if(i == father[i])
ans++;
}
printf("%d\n", ans); // Add output statement
}
return 0;
}