#include <bits/stdc++.h>
using namespace std;
long long dp[1 << 19][19];
bool g[19][19];
int cnt(int h) {
  int ans = 0;
  for (int i = 0; i < 32; i++)
    if (h & (1 << i)) ans++;
  return ans;
}
int main() {
  int n, m, u, v;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> u >> v;
    u--;
    v--;
    g[u][v] = 1;
    g[v][u] = 1;
  }
  long long ans = 0;
  for (int u = 2; u < n; u++) {
    int L = 1 << u;
    dp[L][u] = 1;
    for (int h = L; h < 2 * L; h++) {
      for (int i = 0; i <= u; i++) {
        if (dp[h][i]) {
          for (int v = 0; v < u; v++) {
            if (g[v][i] && !(h & 1 << v)) dp[h | 1 << v][v] += dp[h][i];
          }
        }
      }
    }
    for (int h = L; h < 2 * L; h++) {
      for (int i = 0; i < u; i++) {
        if (g[i][u] && (h & 1 << i) && cnt(h) >= 3) ans += dp[h][i];
      }
    }
  }
  cout << ans / 2 << endl;
  cin >> n;
  return 0;
}
