#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int N = 1 << 22;
int n, m;
bool a[N], b[N];
void dfs1(int);
void dfs2(int);
void dfs1(int cur) {
  a[cur] = 0;
  if (!b[cur]) {
    dfs2(cur);
  }
}
void dfs2(int cur) {
  b[cur] = 1;
  for (int i = 0; i < n; i++) {
    if (!(cur & (1 << i)) && !b[cur | (1 << i)]) {
      dfs2(cur | (1 << i));
    }
  }
  if (a[cur ^ ((1 << n) - 1)]) {
    dfs1(cur ^ ((1 << n) - 1));
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int k;
    cin >> k;
    a[k] = 1;
  }
  int ans = 0;
  for (int i = 0; i < (1 << n); i++) {
    if (a[i]) {
      dfs1(i);
      ans++;
    }
  }
  cout << ans << '\n';
  return 0;
}
