func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = (1 << 23);   bool vis[maxn], num[maxn];   int n, m;   void dfs(int x) {     if (vis[x]) return;     vis[x] = 1;     for (int i = 0; i < n; i++) {       if (x & (1 << i)) dfs(x ^ (1 << i));     }     if (num[x]) dfs((1 << n) - 1 - x);   }   int main() {     int x;     scanf( %d%d , &n, &m);     for (int i = 1; i <= m; i++) {       scanf( %d , &x);       num[x] = 1;     }     int ans = 0;     for (int i = 0; i < (1 << n); i++) {       if (num[i] && !vis[i]) dfs(((1 << n) - 1) & (~i)), ans++;     }     cout << ans << endl;     return 0;   }   