#include <bits/stdc++.h>
using namespace std;
const long long INF = 1LL << 60;
const int inf = 1 << 30;
const int maxn = 2e5 + 5;
inline void fastio() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
}
int n, m, g[15][15], p[15], cnt[15];
int main() {
  fastio();
  cin >> n >> m;
  for (int i = (1); i <= (m); i++) {
    int k, x;
    cin >> k;
    for (int j = (1); j <= (k); j++) {
      cin >> x;
      g[x][i] = 1;
    }
  }
  for (int i = (1); i <= (m); i++) cin >> p[i];
  int ans = 0;
  for (int i = (0); i <= ((1 << i) - 1); i++) {
    memset(cnt, 0, sizeof(cnt));
    for (int j = (0); j <= (i - 1); j++) {
      if ((i >> j) & 1) {
        for (int k = (1); k <= (m); k++) {
          if (g[j][k]) cnt[k]++;
        }
      }
    }
    int flag = 1;
    for (int i = (1); i <= (m); i++)
      if (cnt[i] % 2 != p[i]) flag = 0;
    ans += flag;
  }
  cout << ans << endl;
  return 0;
}
