#include <bits/stdc++.h>
using namespace std;
int n, m, cnt, uu;
bool a[4500005], vis[4500005];
void dfs(int x) {
  if (vis[x]) return;
  vis[x] = true;
  for (int i = 0; i < n; i++)
    if (x & (1 << i)) dfs(x ^ (1 << i));
  if (a[x]) dfs((1 << n) - 1 - x);
}
int main() {
  cin >> n >> m;
  for (int i = 1; i <= m; i++) {
    scanf("%d", &uu);
    a[uu] = true;
  }
  for (int i = 0; i < (1 << n); i++)
    if (!vis[i] && a[i]) {
      cnt++;
      dfs((1 << n) - 1 - i);
    }
  cout << cnt << endl;
  return 0;
}
