#include <stdio.h>
int total;
int pre[1001];
void init(int n){
int i;
for(i=1;i<=n;++i){
pre[i] = i;
}
}
int root(int x){
if(x!=pre[x]){
pre[x] = root(pre[x]);
}
return pre[x];
}
void merge(int a,int b){
int x = root(a);
int y = root(b);
if(x!=y){
pre[x]=y;
--total;
}
}
int main(){
int N,M,i,st,end;
while(scanf("%d",&N) && N){
scanf("%d",&M);
init(N);
total = N-1;
for(i=0;i<M;++i){
scanf("%d %d",&st,&end);
merge(st,end);
}
printf("%d\n",total);
}
return 0;
}
/**************************************************************
Problem: 2203
User: admin
Language: C
Result: Accepted
Time:10 ms
Memory:1148 kb
****************************************************************/