#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=20;
int n,m,f[N][1<<N],c[N];
#undef int
int main(){
#define int long long
cin>>n>>m;
for(int i=0;i<m;i++){
int x,y;cin>>x>>y;
c[x-1]|=1<<(y-1);
}
for(int i=0;i<n;i++){
if((c[0]>>i&1)==0)f[0][1<<i]=1;
}
for(int i=1;i<n;i++){
for(int s=0;s<(1<<n);s++){
for(int t=s;t;t&=t-1){
int j=__builtin_ctz(t);
if((s>>j&1)&&((c[i]>>j&1)==0)){
f[i][s]+=f[i-1][s^(1<<j)];
}
}
}
}
cout<<f[n-1][(1<<n)-1];
return 0;
}