#include <Stdio.h>
//stack
#define MAXSIZE 101
int stack [MAXSIZE];
int top=-1;
void push (int data)
{
stack[++top]=data;
}
int pop()
{
return stack [top--];
}
int visited[101]={};
int main()
{
int map[101][101]={};
int n,m,a,b,i,j;
scanf ("%d %d",&n,&m);
for (i=0;i<m;i++)
{
scanf ("%d %d",&a,&b);
map[a][b]=1;
map[b][a]=1;
}
for (i=0;i<m;i++)
{
for (j=0;j<m;j++)
{
if (i=1)
{
push;
}
else
{
pop();
}
}
}
printf ("%d ",map[i][j]);
printf ("\n");
/*
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
printf ("%d ",map[i][j]);
}
printf ("\n");
}
*/
return 0;
}
*/
#include <stdio.h>
int map[101][101]= {};
int visited[101]= {};
void search(int k, int g)
{
visited[k] = 1;
for (int i=1; i<=g; i++)
{
if(map[k][i]==1) {
//printf ("%d ",map[k][i]==0);
map[i][k] = 0;
map[k][i] = 0;
search(i, g);
}
/*
if (map[i][k]==1)
{
printf ("%d ",map[i][k]==0)
}
*/
}
/*
for (int i=1; i<=g; i++)
{
if (map[k][i]==0)
{
printf ("%d ",map[k][i]==1);
}
if (map[i][k]==0)
{
printf ("%d ",map[i][k]==1);
}
}
*/
}
int main()
{
int n,m,a,b,i,j, s=0;
scanf ("%d %d",&n,&m);
for (i=0; i<m; i++)
{
scanf ("%d %d",&a,&b);
map[a][b]=1;
map[b][a]=1;
}
/*
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
{
printf ("%d ",map [i][j]);
}
printf ("\n");
}
*/
search(1, n);
for(i=1; i<=n; i++) {
s+= visited[i];
}
printf("%d", s-1);
return 0;
}