#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
int mypow(int a, int b) {
  int ans = 1;
  for (; b > 0; b--) {
    ans *= a;
  }
  return ans;
}
int main(void) {
  int n, m;
  int k[11];
  int s[11][11];
  int p[11];
  scanf("%d %d", &n, &m);
  for (int i = 0; i < m; i++) {
    scanf("%d", &k[i]);
    for (int j = 0; j < k[i]; j++) {
      scanf("%d", &s[i][j]);
    }
  }
  for (int i = 0; i < m; i++) {
    scanf("%d", &p[i]);
  }
  int ans = 0;
  for (int i = 0; i < mypow(2, n); i++) {
    for (int j = 0; j < m; j++) {
      int swcount = 0;
      for (int h = 0; h < k[j]; h++) {
        if (((mypow(2, s[j][h] - 1)) & i) > 0) {
          swcount++;
        }
      }
      if (swcount % 2 != p[j]) goto bad;
    }
    ans++;
  bad:
    continue;
  }
  printf("%d\n", ans);
}
