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