#include <bits/stdc++.h>
using namespace std;
const int N = 1 << 23;
bool vst[N], a[N];
int n, m;
void dfs(int pos) {
  if (vst[pos]) return;
  vst[pos] = 1;
  for (int i = 0; i < n; i++) {
    int shift = 1 << i;
    if (pos & shift) dfs(pos - shift);
  }
  if (a[pos]) dfs((1 << n) - 1 - pos);
}
int main() {
  ios::sync_with_stdio(false);
  int tmp, c = 0;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> tmp;
    if (!tmp) return !(cout << 1 << endl);
    a[tmp] = 1;
  }
  for (int i = 0; i < (1 << n); i++) {
    if (!vst[i] && a[i]) {
      dfs((1 << n) - 1 - i);
      c++;
    }
  }
  cout << c << endl;
}
