#include <bits/stdc++.h>
using namespace std;
long long dp[1 << 20][20], ans = 0;
vector<int> e[20];
int lowbit(int x) { return x & (-x); }
int main() {
  ios::sync_with_stdio(false);
  int n, m, f, t;
  cin >> n >> m;
  for (int i = 0; i < m; ++i) {
    cin >> f >> t;
    e[f - 1].push_back(t - 1);
    e[t - 1].push_back(f - 1);
  }
  for (int i = 0; i < n; ++i) dp[1 << i][i] = 1;
  for (int sta = 1; sta < (1 << n); ++sta) {
    for (int i = 0; i < n; ++i) {
      if (dp[sta][i]) {
        for (int k = 0; k < e[i].size(); ++k) {
          int j = e[i][k];
          if (lowbit(sta) > (1 << j)) continue;
          if (sta & (1 << j)) {
            if (lowbit(sta) == (1 << j)) ans += dp[sta][i];
          } else {
            int x = 1 << j;
            dp[sta | x][j] += dp[sta][i];
          }
        }
      }
    }
  }
  ans = (ans - m) >> 1;
  cout << ans << "\n";
  return 0;
}
