/*
#include <stdio.h>
#define MAXSIZE 5
int front, rear=0;
int cQueue[MAXSIZE]={};
void input(int k)
{
if ((rear+1)%5 == front)
{
printf("Queue is full\n");
return;
}
rear = (rear+1)%5;
cQueue[rear] = k;
}
int output()
{
if (front==rear)
{
printf("Queue is empty");
return 0;
}
int k = cQueue[(front+1)%5];
cQueue[(front+1)%5] = 0;
front = (front+1)%5;
return k;
}
void show()
{
for (int i=0; i<MAXSIZE; i++)
{
printf("%d: %d\n", i, cQueue[i]);
}
}
int main()
{
int n, k, p;
for(;;)
{
printf("Choice Menu: ");
scanf("%d", &n);
switch(n)
{
case 1:
printf("Input data is: ");
scanf("%d", &k);
input(k);
break;
case 2:
p = output();
printf("Output data is: %d\n", p);
break;
case 3:
show();
}
}
}
*/
/*
#include <stdio.h>
#define MAXSIZE 5
int front, rear=0;
int cQueue[MAXSIZE]={};
void input(int k)
{
if (rear==front && cQueue[front]!=0)
{
printf("Queue is full\n");
return;
}
cQueue[rear] = k;
rear = (rear+1)%5;
}
int output()
{
if (front==rear && cQueue[front] == 0)
{
printf("Queue is empty");
return 0;
}
int k = cQueue[front];
cQueue[front] = 0;
front = (front+1)%5;
return k;
}
void show()
{
for (int i=0; i<MAXSIZE; i++)
{
printf("%d: %d\n", i, cQueue[i]);
}
}
int main()
{
int n, k, p;
for(;;)
{
printf("Choice Menu: ");
scanf("%d", &n);
switch(n)
{
case 1:
printf("Input data is: ");
scanf("%d", &k);
input(k);
break;
case 2:
p = output();
printf("Output data is: %d\n", p);
break;
case 3:
show();
}
}
}
*/
//
//#include <stdio.h>
//
//int array[200][200] = {0};
//int count=0;
//
//void search(int k, int l)
//{
// for (int i=l; i<200; i++)
// {
// if(array[k][i] == 1)
// {
// array[k][i] -= 1;
// array[i][k] -= 1;
// count++;
// k = i;
// search(k, l);
// }
// }
//}
//
//int main()
//{
// int nCom;
//
// scanf("%d", &nCom);
//
// int nArr;
//
// scanf("%d", &nArr);
//
// for (int i=0; i<nArr; i++)
// {
// int a, b;
// scanf("%d %d", &a, &b);
// array[a][b] = 1;
// array[b][a] = 1;
// }
//
// search(0, 1);
//
// printf("%d", count);
//}
#include<stdio.h>
int mat[105][105] = {0};
int visit[105] = {0};
int n, p;
void travel(int k) {
int i;
visit[k] = 1;
for(i=1; i<=n; i++) {
if(mat[k][i]==1) {
//printf("%d->", i);
mat[k][i] = 0;
mat[i][k] = 0;
travel(i);
}
}
}
int main() {
int i, j;
int x, y;
scanf("%d", &n);
scanf("%d", &p);
for(i=0; i<p; i++) {
scanf("%d %d", &x, &y);
mat[x][y]++;
mat[y][x]++;
}
travel(1);
x = 0;
for(i=1; i<=n; i++){
x += visit[i];
}
printf("%d", x-1);
}



