#include <bits/stdc++.h>
using namespace std;
const long double Pi = 3.14159265359;
const long MOD = (long)1e9 + 7;
long long const MAXN = (long long)2e5 + 10;
long long a[10][35];
long long c[10];
long long b[35];
int main() {
  ios::sync_with_stdio(false);
  long long n, m, co;
  string s;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    cin >> s >> co;
    for (int j = 0; j < n; j++) a[i][j] = s[j] - '0';
    c[i] = co;
  }
  long long cnt, fl, out = 0;
  if (c[0] == 0) {
    for (int j = 0; j < n; j++) b[j] = 1 - a[0][j];
    fl = 1;
    for (int i = 0; i < m; i++) {
      cnt = 0;
      for (int j = 0; j < n; j++) {
        if (a[i][j] == b[j]) cnt++;
      }
      if (cnt != c[i]) {
        fl = 0;
        break;
      }
    }
    if (fl == 1) out++;
  }
  if (c[0] == 3) {
    for (int i1 = 0; i1 < n; i1++) {
      for (int i2 = i1 + 1; i2 < n; i2++) {
        for (int i3 = i2 + 1; i3 < n; i3++) {
          for (int j = 0; j < n; j++) b[j] = 1 - a[0][j];
          b[i1] = 1 - b[i1];
          b[i2] = 1 - b[i2];
          b[i3] = 1 - b[i3];
          fl = 1;
          for (int i = 0; i < m; i++) {
            cnt = 0;
            for (int j = 0; j < n; j++) {
              if (a[i][j] == b[j]) cnt++;
            }
            if (cnt != c[i]) {
              fl = 0;
              break;
            }
          }
          if (fl == 1) out++;
        }
      }
    }
  }
  if (c[0] == 2) {
    for (int i1 = 0; i1 < n; i1++) {
      for (int i2 = i1 + 1; i2 < n; i2++) {
        for (int j = 0; j < n; j++) b[j] = 1 - a[0][j];
        b[i1] = 1 - b[i1];
        b[i2] = 1 - b[i2];
        fl = 1;
        for (int i = 0; i < m; i++) {
          cnt = 0;
          for (int j = 0; j < n; j++) {
            if (a[i][j] == b[j]) cnt++;
          }
          if (cnt != c[i]) {
            fl = 0;
            break;
          }
        }
        if (fl == 1) out++;
      }
    }
  }
  if (c[0] == 1) {
    for (int i1 = 0; i1 < n; i1++) {
      for (int j = 0; j < n; j++) b[j] = 1 - a[0][j];
      b[i1] = 1 - b[i1];
      fl = 1;
      for (int i = 0; i < m; i++) {
        cnt = 0;
        for (int j = 0; j < n; j++) {
          if (a[i][j] == b[j]) cnt++;
        }
        if (cnt != c[i]) {
          fl = 0;
          break;
        }
      }
      if (fl == 1) out++;
    }
  }
  if (c[0] == 4) {
    for (int i1 = 0; i1 < n; i1++) {
      for (int i2 = i1 + 1; i2 < n; i2++) {
        for (int i3 = i2 + 1; i3 < n; i3++) {
          for (int i4 = i3 + 1; i4 < n; i4++) {
            for (int j = 0; j < n; j++) b[j] = 1 - a[0][j];
            b[i1] = 1 - b[i1];
            b[i2] = 1 - b[i2];
            b[i3] = 1 - b[i3];
            b[i4] = 1 - b[i4];
            fl = 1;
            for (int i = 0; i < m; i++) {
              cnt = 0;
              for (int j = 0; j < n; j++) {
                if (a[i][j] == b[j]) cnt++;
              }
              if (cnt != c[i]) {
                fl = 0;
                break;
              }
            }
            if (fl == 1) out++;
          }
        }
      }
    }
  }
  if (c[0] == 5) {
    for (int i1 = 0; i1 < n; i1++) {
      for (int i2 = i1 + 1; i2 < n; i2++) {
        for (int i3 = i2 + 1; i3 < n; i3++) {
          for (int i4 = i3 + 1; i4 < n; i4++) {
            for (int i5 = i4 + 1; i5 < n; i5++) {
              for (int j = 0; j < n; j++) b[j] = 1 - a[0][j];
              b[i1] = 1 - b[i1];
              b[i2] = 1 - b[i2];
              b[i3] = 1 - b[i3];
              b[i4] = 1 - b[i4];
              b[i5] = 1 - b[i5];
              fl = 1;
              for (int i = 0; i < m; i++) {
                cnt = 0;
                for (int j = 0; j < n; j++) {
                  if (a[i][j] == b[j]) cnt++;
                }
                if (cnt != c[i]) {
                  fl = 0;
                  break;
                }
              }
              if (fl == 1) out++;
            }
          }
        }
      }
    }
  }
  cout << out;
  return 0;
}
