#include <bits/stdc++.h>
using namespace std;
#define MAXN 1000001
int n,m;
int hx[1001][1001];
struct edge
{
int to,nex;
}Edge[MAXN<<1];
int head[MAXN],cnt;
void add(int u,int v)
{
Edge[cnt].nex=head[u];
Edge[cnt].to=v;
head[u]=cnt++;
}
int dfn[MAXN],low[MAXN],cut[MAXN],num,root,sum,ans;
int buk[2000],color[2000],vis[2000],mark[2000];
stack <int> st;
vector <int> dcc[MAXN];
void tarjan(int x)
{
dfn[x]=low[x]=++num;
st.push(x);
if(x==root && head[x]==-1)
{
dcc[++sum].push_back(x);
return;
}
int flag=0;
for(int i=head[x];i!=-1;i=Edge[i].nex)
{
int y=Edge[i].to;
int z;
if(!dfn[y])
{
tarjan(y);
low[x]=min(low[x],low[y]);
if(low[y]>=dfn[x])
{
flag++;
if(x!=root || flag>1) cut[x]=1;
sum++;
while(1)
{
z=st.top();
st.pop();
dcc[sum].push_back(z);
if(z==y) break;
}
dcc[sum].push_back(x);
}
}
else low[x]=min(low[x],dfn[y]);
}
}
void bfs(int x)
{
memset(buk,0,sizeof(buk));
memset(color,0,sizeof(color));
memset(vis,0,sizeof(vis));
for(int i=0;i<dcc[x].size();i++)
buk[dcc[x][i]]=1;
color[dcc[x][0]]=1;
queue <int> q;
q.push(dcc[x][0]);
while(q.size())
{
int t=q.front();
q.pop();
if(vis[t]) continue;
vis[t]=1;
for(int i=head[t];i!=-1;i=Edge[i].nex)
{
int y=Edge[i].to;
if(!buk[y]) continue;
int cor=3-color[t];
if(color[y] && color[y]!=cor)
{
for(int j=0;j<dcc[x].size();j++)
mark[dcc[x][j]]=1;
return;
}
color[y]=cor;
q.push(y);
}
}
}
inline int read()
{
int x=0;
char ch=getchar();
while(ch>'9' || ch<'0') ch=getchar();
while(ch>='0' && ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x;
}
int main()
{
while(n=read(),m=read())
{
if(n==0 && m==0) break;
memset(head,-1,sizeof(head));
memset(hx,0,sizeof(hx));
ans=cnt=num=0;
for(int i=1;i<=n;i++)
dcc[i].clear();
memset(dfn,0,sizeof(dfn));
memset(low,0,sizeof(low));
memset(cut,0,sizeof(cut));
memset(mark,0,sizeof(mark));
int a1,a2;
for(int i=1;i<=m;i++)
{
a1=read(),a2=read();
hx[a1][a2]++,hx[a2][a1]++;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i!=j && !hx[i][j])
add(i,j);
for(int i=1;i<=n;i++)
if(!dfn[i]) root=i,tarjan(i);
for(int i=1;i<=sum;i++)
bfs(i);
for(int i=1;i<=n;i++)
if(!mark[i]) ans++;
printf("%d\n",ans);
}
}