#include <bits/stdc++.h>
using namespace std;
int a[30][30];
long long dp[1100005][22], ans;
int main() {
  int n, m, x, y;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &x, &y);
    x--;
    y--;
    a[x][y] = a[y][x] = 1;
  }
  for (int i = 0; i < n; i++) dp[(1 << i)][i] = 1;
  int all = 1 << n;
  for (int mask = 1; mask < all; mask++) {
    int st;
    for (int i = 0; i < n; i++) {
      if (mask & (1 << i)) {
        st = i;
        break;
      }
    }
    for (int i = st; i < n; i++) {
      if (dp[mask][i]) {
        if (a[st][i]) ans += dp[mask][i];
        for (int j = st + 1; j < n; j++) {
          if (a[i][j] && !(mask & (1 << j))) {
            dp[mask | (1 << j)][j] += dp[mask][i];
          }
        }
      }
    }
  }
  ans = (ans - m) / 2;
  printf("%lld\n", ans);
}
