#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
int p[1005];
using namespace std;
int f(int x)
{
return p[x]==x?x:p[x]=f(p[x]);//并查集,如果找到啦父亲,那么返回,找不到的话继续找然后把父亲置成找到的结果
}
int main()
{
int n,m,i,a,b,ans;
while(scanf("%d%d",&n,&m)!=EOF&&n)
{
ans=0;
for(i=0; i<n; i++)
p[i]=i;
for(i=0; i<m; i++)
{
cin >> a >> b;
p[f(--a)]=p[f(--b)];
}//并查集找联通分量的个数
for(i=0; i<n; i++)
if(p[i]==i) ans++;
cout << ans -1 << endl;//联通分量的个数-1就是要修的路
}
return 0;
}