#include <bits/stdc++.h>
int bit[11];
void bitplus(int[]);
int main() {
  int N, M, K[10], S[10][10], P[10];
  int i, j, k, sum, cnt, ans, bitn;
  scanf("%d %d", &N, &M);
  for (i = 0; i < M; i++) {
    scanf("%d", &K[i]);
    for (j = 0; j < K[i]; j++) {
      scanf("%d", &S[i][j]);
    }
  }
  for (i = 0; i < M; i++) {
    scanf("%d", &P[i]);
  }
  for (i = 0; i < 10; i++) {
    bit[i] = 0;
  }
  bitn = pow(2, N);
  for (i = 0; i < bitn; i++) {
    cnt = 0;
    for (j = 0; j < M; j++) {
      sum = 0;
      for (k = 0; k < K[j]; k++) {
        if (bit[K[k] - 1] == 1) sum++;
      }
      if (sum % 2 == P[j]) cnt++;
    }
    if (cnt == M) ans++;
    bitplus(bit);
  }
  printf("%d\n", ans);
  return 0;
}
void bitplus(int a[]) {
  int i;
  a[0] += 1;
  for (i = 0; i < 10; i++) {
    if (a[i] == 2) {
      a[i] = 0;
      a[i + 1] += 1;
    }
  }
}
