#include"stdio.h"
#include"stdlib.h"
#include"string.h"
int M,N,set[1010];
int find(int x)
{
return x==set[x]? x:set[x]=find(set[x]);
}
int Union(int x,int y)
{
int a=find(x),b=find(y);
if(a!=b)
set[a]=b;
}
int main()
{
int a,b,x,y,sum;
while(scanf("%d%d",&N,&M),N)
{
for(int i=1;i<=N ;i++)
set[i]=i;
for(int i=1;i<=M;i++)
{
scanf("%d%d",&a,&b);
x=find(a);
y=find(b);
if(x!=y)
Union(x,y);
}
sum=-1;
for(int i=1;i<=N;i++)
{
if(set[i]==i)
sum++;
}
printf("%d\n",sum);
}
return 0;
}