#include<bits/stdc++.h>
using namespace std;
#define TLE (double)clock() / CLOCKS_PER_SEC <= 0.95
#define lowbit(x) (x&(-x))
#define IOS ios::sync_with_stdio(false)
#define ll long long
#define INF 0x3f3f3f3f
#define maxn 2000
unordered_map<int,int> pd[maxn];
int flag[maxn];
int ans;
int n,m;
void dfs(int x)
{
ans++;
for(int i=x+1;i<=n;i++)
{
if(pd[x][i]==1||flag[i]==1) continue;
flag[i]=1;
dfs(i);
flag[i]=0;
}
}
int main()
{
IOS;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int f1,f2;
cin>>f1>>f2;
pd[f1][f2]=pd[f2][f1]=1;
}
for(int i=1;i<=n;i++)
{
flag[i]=1;
dfs(i);
flag[i]=0;
}
cout<<ans+1<<endl;
return 0;
}