#include <bits/stdc++.h>
using namespace std;
long long dp[1 << 20][20];
bool E[20][20];
int n, m;
void Init() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    E[x - 1][y - 1] = E[y - 1][x - 1] = 1;
  }
}
int main() {
  Init();
  long long ans = 0;
  for (int s = 0; s < n; s++) {
    int nn = (1 << s);
    memset(dp, 0, sizeof(dp));
    dp[0][s] = 1;
    for (int i = 0; i < nn; i++) {
      for (int j = 0; j <= s; j++) {
        if (dp[i][j]) {
          ans += dp[i][j] * E[j][s];
          for (int k = 0; k < s; k++) {
            if (!(i & (1 << k)) && E[j][k]) {
              dp[i + (1 << k)][k] += dp[i][j];
            }
          }
        }
      }
    }
  }
  printf("%lld\n", ((ans - m) >> 1));
  return 0;
}
