#include <bits/stdc++.h>
using namespace std;
int ts,js,ans,x,tot,head[20100],y,n,m,f[2010],v;
struct no{int val,nxt;}a[20101];
void jb(int x,int y){a[++tot]={y,head[x]},head[x]=tot;}
void sc(int t){
if(t>n){ans++;return ;}
sc(t+1);
if(f[t]==1) return;
for(int i=head[t];i;i=a[i].nxt) v=a[i].val,f[v]=1;
sc(t+1);
for(int i=head[t];i;i=a[i].nxt) v=a[i].val,f[v]=0;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x>>y;
if(x>y)swap(x,y);
jb(x,y);
}
sc(1);
cout<<ans;
}