#include<bits/stdc++.h>
using namespace std;
int n,m,s[1000000],x,y;
void init_set(){//初始化
for(int i=1;i<=n+2;i++) s[i]=i;
}
int find_set(int x){//查找
return x==s[x]?x:find_set(s[x]);
}
void union_set(int x,int y){//合并
x=find_set(x);
y=find_set(y);
if(x!=y) s[x]=s[y];
}
int main(){
do{
cin>>n;
init_set();
if(n==0) break;
cin>>m;
if(m==0){
cout<<n-1<<endl;
continue;
}
int cmp=0;
for(int i=1;i<=m;i++){
cin>>x>>y;
union_set(x,y);
}
for(int k=1;k<=n;k++){
for(int j=k+1;j<=n;j++){
if(find_set(k)!=find_set(j)){
cmp++;
union_set(k,j);
}
}
}
cout<<cmp<<endl;
}while(n!=0);
}