/*\#include<stdio.h>
#include<string.h>
char stack[31], stc[31];
int tp=-1, top=-1, ms, ps, mm, pm;
void psh(char a)
{
tp++;
stc[tp]=a;
}
void push(char k)
{
int i=0;
if(k==')')
{
while(stack[i]=='(')
{
top--;
}
push(ms);
}
top++;
stack[top]=k;
}
char pop()
{
return stack[top--];
}
int pp()
{
int sum=0;
while(top=-1)
{
sum=stc[top--]+sum;
}
}
int main()
{
char str[31];
int i=0, p;
gets(str);
while(str[i]!=NULL)
{
push(str[i]);
i++;
}
while(top=!-1)
{
p=pop();
if(p==ms)
{
psh(2*pop());
}
else if(p==ps)
{
psh(2+pop());
}
else if(p==pm)
{
psh(3+pop());
}
else psh(3*pop());
}
printf("%d", pp());
return 0;
}
*/
/*
#include<stdio.h>
#include<string.h>
int top=-1, stack[31];
void push(int k)
{
top++;
stack[top]=k;
}
int pop()
{
return stack[top--];
}
int main()
{
int i=0, sum=0;
char str[31];
gets(str);
while(str[i]!=NULL)
{
sum=0;
if(str[i]=='(')
{
push(-1);
}
else if(str[i]=='[')
{
push(-2);
}
else if(str[i]==')')
{
while(stack[top]!=-1)
{
if(stack[top]==-2)
{
printf("0");
return 0;
}
sum=pop()+sum;
}
pop();
if(sum==0)
push(2);
else
push(2*sum);
}
else if(str[i]==']')
{
while(stack[top]!=-2)
{
if(stack[top]==-1)
{
printf("0");
return 0;
}
sum=pop()+sum;
}
pop();
if(sum==0)
push(3);
else
push(3*sum);
}
i++;
}
sum=0;
while(top!=-1)
{
if(stack[top]<0)
{
printf("0");
return 0;
}
sum+=pop();
}
printf("%d", sum);
return 0;
}
*/
#include <stdio.h>
int n, m,q=0;
int map[101][101]= {}; //연결상태
int visited[101]= {}; //방문상태
void dfs(int node)
{
int i;
visited[node]=1;
for(i=1;i<=n;i++)
{
if(map[node][i]==1 && visited[i]==0)
{
q++;
dfs(i);
}
}
}
int main()
{
int i, j,a,b;
scanf("%d %d",&n, &m);
for(i=1; i<=m; i++)
{
scanf("%d %d",&a,&b);
map[a][b]=1;
map[b][a]=1;
}
dfs(1);
printf("%d", q);
return 0;
}