#include <bits/stdc++.h>
using namespace std;
int k[10];
int s[10][10];
int p[10];
int N, M;
int ans;
void dfs(vector<int> &v) {
  if (v.size() == N) {
    for (int i = 0; i < M; i++) {
      int sum = 0;
      for (int j = 0; j < k[i]; j++) {
        sum += v[j];
      }
      if (sum % 2 != p[i]) {
        return;
      }
    }
    ans++;
    return;
  }
  vector<int> vv = v;
  vv.push_back(0);
  dfs(vv);
  vector<int> vvv = v;
  vvv.push_back(1);
  dfs(vvv);
}
int main(void) {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> N >> M;
  for (int i = 0; i < M; i++) {
    cin >> k[i];
    for (int j = 0; j < k[i]; j++) {
      cin >> s[i][j];
    }
  }
  for (int i = 0; i < M; i++) cin >> p[i];
  vector<int> v;
  dfs(v);
  cout << ans << endl;
  return 0;
}
