/*
#include <iostream>
#include <vector>
using namespace std;
int win=0,X,Y,exit=0;
int cnt=0,a,b;
int dfs(vector<vector<int> > Ans,int t, int x, int y,int m1, int m2)
{
cout<<Ans[x][y]<<endl;
if(Ans[x][y]==Ans[x+m1][y+m2])
{
cnt++;
Ans[x][y]=0;
cout<<0<<' '<<x<<' '<<y<<' '<<m1<<' '<<m2<<' '<<cnt<<endl;
dfs(Ans,t,x+m1,y+m2,m1,m2);
}
if(cnt==4)
{
if(Ans[x][y]==Ans[x-m1][y-m2])
cnt++;
}
else if(Ans[x][y]==Ans[x][y+1])
{
cnt++;
Ans[x][y]=0;
cout<<1<<' '<<x<<' '<<y<<endl;
dfs(Ans,t,x,y+1,0,1);
}
else if(Ans[x][y]==Ans[x][y-1])
{
cnt++;
Ans[x][y]=0;
cout<<2<<' '<<x<<' '<<y<<endl;
dfs(Ans,t,x,y-1,0,-1);
}
else if(Ans[x][y]==Ans[x+1][y-1])
{
cnt++;
Ans[x][y]=0;
cout<<3<<' '<<x<<' '<<y<<endl;
dfs(Ans,t,x+1,y-1,1,-1);
}
else if(Ans[x][y]==Ans[x+1][y])
{
cnt++;
Ans[x][y]=0;
cout<<4<<' '<<x<<' '<<y<<endl;
dfs(Ans,t,x+1,y,1,0);
}
else if(Ans[x][y]==Ans[x+1][y+1])
{
cnt++;
Ans[x][y]=0;
cout<<5<<' '<<x<<' '<<y<<endl;
dfs(Ans,t,x+1,y+1,1,1);
}
if(cnt==5)
{
win=t;
X=x;
Y=y;
exit++;
cout<<"cnt is 5"<<' '<<exit<<endl;
return 0;
}
}
void fi(vector<vector<int> > ans)
{
cnt=0;
for(int i=0; i<19; i++)
{
for(int j=0; j<19; j++)
{
if(ans[i][j]==1)
{
cout<<1<<' '<<i<<' '<<j<<' '<<exit<<endl;
if(exit==0)
dfs(ans,1,i,j,10,10);
}
else if(ans[i][j]==2)
{
cout<<2<<' '<<i<<' '<<j<<' '<<exit<<endl;
if(exit==0)
dfs(ans,2,i,j,10,10);
}
}
}
return;
}
int main()
{
int num;
vector<int> v1;
vector<vector<int> > ans;
for(int i=0; i<19; i++)
{
v1.clear();
for(int j=0; j<19; j++)
{
cin>>num;
v1.push_back(num);
}
ans.push_back(v1);
}
while(exit==0)
fi(ans);
if(win>0)
cout<<win<<endl;
else
cout<<0<<endl;
cout<<X<<' '<<Y;
}
*/
/*
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int> > ans;
vector<int> iloc1;
vector<int> jloc1;
vector<int> iloc2;
vector<int> jloc2;
int cal(int point, int x, int y, int d1, int d2) {
int c=0;
if(x<0 || y<0 || x>=19 || y>=19) return 0;
if(point==ans[x][y]) c=1;
else return 0;
return c + cal(point, x+d1, y+d2, d1, d2);
}
int dfs(int x, int y) {
if(cal(ans[x][y], x, y, 0, 1)+cal(ans[x][y], x, y, 0, -1)-1 == 5) return 1;
if(cal(ans[x][y], x, y, 1, 0)+cal(ans[x][y], x, y, -1, 0)-1 == 5) return 1;
if(cal(ans[x][y], x, y, 1, 1)+cal(ans[x][y], x, y, -1, -1)-1 == 5) return 1;
if(cal(ans[x][y], x, y, -1, 1)==5) return 1;
return 0;
}
bool loc()
{
for(int i=0; i<iloc1.size(); i++) {
int k1 = dfs(iloc1[i],jloc1[i]);
if(k1==1) {
cout << 1 <<endl<< iloc1[i]+1 << ' '<< jloc1[i]+1;
return false;
}
}
for(int i=0; i<iloc2.size(); i++) {
int k2 = dfs(iloc2[i],jloc2[i]);
if(k2==1) {
cout << 2 <<endl<< iloc2[i]+1 << ' '<< jloc2[i]+1;
return false;
}
}
return true;
}
int main()
{
int num;
vector<int> v1;
for(int i=0; i<19; i++)
{
v1.clear();
for(int j=0; j<19; j++)
{
cin>>num;
v1.push_back(num);
if(num==1) {
iloc1.push_back(i);
jloc1.push_back(j);
}
if(num==2) {
iloc2.push_back(i);
jloc2.push_back(j);
}
}
ans.push_back(v1);
}
if(loc()) {
cout << 0;
}
}
*/
#include <iostream>
#include <vector>
using namespace std;
int num[101];
int total, connect;
void f(vector<vector<int> > g, int x, int y)
{
for(int i=0; i<=total; i++)
{
if(g[x][y+i]==1)
{
g[x][y+i]=0;
g[y+i][x]=0;
num[y+i]=1;
f(g,y+i,1);
}
}
}
int main()
{
int x, y;
vector<vector<int> > graph;
vector<int> v;
cin>>total>>connect;
for(int i=0; i<=total; i++)
{
for(int j=0; j<=total; j++)
{
v.push_back(0);
}
graph.push_back(v);
}
for(int i=1; i<=connect; i++)
{
cin>>x>>y;
graph[x][y]=1;
graph[y][x]=1;
}
f(graph,1,1);
int sum = 0;
num[1] = 0;
for(int i=1; i<=total; i++) {
sum += num[i];
}
cout << sum;
}