#include <bits/stdc++.h>
using namespace std;
const int N = 20;
bool a[N][N];
long long f[1 << N][N], ans = 0;
int main() {
  int n, m, t, u, v, i, j, k;
  scanf("%d%d", &n, &m);
  t = 1 << n;
  for (i = 1; i <= m; ++i) {
    scanf("%d%d", &u, &v);
    a[--u][--v] = a[v][u] = true;
  }
  for (i = 0; i < n; ++i) f[1 << i][i] = true;
  for (i = 1; i <= t; ++i)
    for (j = 0; j < n; ++j) {
      if (!f[i][j]) continue;
      for (k = 0; k < n; ++k) {
        if (!a[j][k]) continue;
        if ((i & -i) > 1 << k) continue;
        if (1 << k & i) {
          if (1 << k == (i & -i)) ans += f[i][j];
        } else
          f[i | 1 << k][k] += f[i][j];
      }
    }
  printf("%lld\n", (ans - m) / 2);
  return 0;
}
