#include <bits/stdc++.h>
using namespace std;
bool vis[5 << 20][2], key[5 << 20];
int b, n, cnt, a[5 << 20];
void dfs(int u, bool t) {
  if (vis[u][t]) return;
  vis[u][t] = 1;
  if (t) {
    for (int i = 0; i < b; i++)
      if (!(u >> i & 1)) dfs(u | 1 << i, 1);
    if (key[((1 << b) - 1) ^ u]) dfs(((1 << b) - 1) ^ u, 0);
  } else
    dfs(u, 1);
}
int main() {
  cin >> b >> n;
  for (int i = 1; i <= n; i++) scanf("%d", a + i), key[a[i]] = 1;
  for (int i = 1; i <= n; i++)
    if (!vis[a[i]][0]) dfs(a[i], 0), cnt++;
  cout << cnt << endl;
  return 0;
}
