#include <stdio.h>
#include <string.h>
int pararent[1150];
int root(int n){
if(pararent[n] == 0)return n;
else return pararent[n] = root(pararent[n]);
}
int main(int argc, char *argv[])
{
//FILE *fp;
//fp = freopen("in.txt","r",stdin);
int N,M;
int fr,to;
int num,fr_root,to_root;
while(scanf("%d",&N),N){
scanf("%d",&M);
num = 0;
memset(pararent,0,sizeof(pararent));
for(int i = 0; i < M; ++i){
scanf("%d%d",&fr,&to);
//不是自身成环
if(fr != to){
fr_root = root(fr);
to_root = root(to);
//不在连通域内
if(fr_root != to_root){
++num;
fr_root > to_root ?pararent[fr_root] = to_root: pararent[to_root] = fr_root;
}
}
}
printf("%d\n",N- 1 - num);
}
return 0;
}