#include <bits/stdc++.h>
using namespace std;
bool mapa[20][20], F;
long long f[1 << 20][20], res = 0;
int main() {
  int n, m, i, j, k, l, x, y;
  scanf("%d%d", &n, &m);
  for (i = 0; i < m; i++) {
    scanf("%d%d", &x, &y);
    x--;
    y--;
    if (x > y) swap(x, y);
    mapa[x][y] = mapa[y][x] = 1;
    f[(1 << x) + (1 << y)][y] = 1;
  }
  for (i = 7; i < (1 << n); i++) {
    F = 1;
    for (j = 0; j < n; j++)
      if (i & (1 << j) && f[i][j] == 0) {
        if (F) {
          F = 0;
          k = j;
          continue;
        }
        for (l = k + 1; l < n; l++) {
          if (i & (1 << l) && mapa[j][l]) f[i][j] += f[i - (1 << j)][l];
        }
        if (mapa[k][j]) res += f[i][j];
      }
  }
  printf("%lld\n", res / 2);
}
