public class P1536 {
static int []f;
public static void main(String args[]){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();//城镇数目
int m = in.nextInt();//道路数目
f = new int[n+1];
if(m ==0){
in.nextInt();
break;
}
//初始化
for (int i = 1; i <= n; i++) {
f[i] = i;
}
for (int i = 0; i < m; i++) {
merge(in.nextInt() ,in.nextInt());
}
//找出应修路的数目
int ans = 0;
for (int i = 1; i <= n; i++) {
if(f[i] == i){
ans++;
}
}
System.out.println(ans-1);
}
}
//合并
static void merge(int i, int j){
f[find(i)] = find(j);
}
//查找
static int find(int x){
return x == f[x] ? x : (f[x] = find(f[x]));
}
}