#include <bits/stdc++.h>
using namespace std;
int main() {
  int N, M;
  cin >> N >> M;
  int a[M + 1][N + 1];
  long long ans = 0;
  memset(a, 0, sizeof(a));
  for (int i = 1; i <= M; i++) {
    int n;
    cin >> n;
    for (int j = 1; j <= n; j++) {
      cin >> a[i][j];
    }
  }
  for (int i = 1; i <= M; i++) {
    cin >> a[i][0];
  }
  for (int i = 0; i <= (pow(2, N) - 1); i++) {
    for (int j = 1; j <= M; j++) {
      int sum = 0;
      for (int z = 1; a[j][z]; z++) {
        sum += pow(2, a[j][z] - 2);
      }
      sum = sum / 2;
      int q = sum & i, bitsum = 0;
      for (int z = 1; z <= 10; z++) {
        if ((1 << (z - 1)) & q) bitsum++;
      }
      if (bitsum % 2 != a[j][0]) break;
      if (j == M) ans++;
    }
  }
  cout << ans;
}
