func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 20;   long long n, m, x, y, ans, low, dp[maxn][1 << maxn];   bool f[maxn][maxn];   long long lowbit(long long x) {     long long ret = 0;     while (x) {       if (x & 1)         return ret;       else         ret++;       x /= 2;     }   }   int main() {     scanf( %lld%lld , &n, &m);     for (long long i = 1; i <= m; i++)       scanf( %d%d , &x, &y), x--, y--, f[x][y] = f[y][x] = true;     for (long long i = 0; i < n; i++) dp[i][1 << i] = 1;     for (long long i = 1; i < (1 << n); i++) {       long long minn = lowbit(i);       for (long long j = 0; j < n; j++)         if ((i & (1 << j)) && dp[j][i])           for (long long k = minn; k < n; k++)             if (f[j][k]) {               if ((!(i & (1 << k))))                 dp[k][i | (1 << k)] += dp[j][i];               else if (k == minn)                 ans += dp[j][i];             }     }     printf( %lld n , (ans - m) / 2);     return 0;   }   