/*
TASK:school
LANG:C++
*/
#include<iostream.h>
long p[101],n,m,x,z,br,i;unsigned long long a[100][100];
void read()
{cin>>n>>m;for(int i=0;i<m;i++){cin>>x>>z;a[x][z]=a[z][x]=1;}}
void BFS(int v)
{p[v]=1; br++;
int f=0,l=1;int t[100];
while(f!=l)
{for(i=0;i<n;i++)
if(!p[i] && a[v][i])
{t[l++]=i;p[i]=1;}
v=t[++f];
for(i=0;i<n;i++)if(p[i]==0)BFS(i);}
}
int main()
{read();BFS(1);
cout<<br-1<<endl;
}

