#include <bits/stdc++.h>
using ll = long long;
int main() {
  int N, M;
  std::cin >> N >> M;
  std::vector<std::vector<int>> k(N);
  for (int i = 0; i < M; i++) {
    int p;
    std::cin >> p;
    for (int j = 0; j < p; j++) {
      int in;
      std::cin >> in;
      in--;
      k[in].emplace_back(i);
    }
  }
  std::vector<int> m(M);
  for (int i = 0; i < M; i++) {
    int p;
    std::cin >> p;
    if (p == 1) {
      m[i]++;
    }
  }
  int ans = 0;
  for (int i = 0; i < (1 << N); i++) {
    std::vector<int> cm(m);
    for (int j = 0; j < N; j++) {
      int l = (i >> j) & 1;
      if (l == 0) continue;
      for (int i = 0; i < k[j].size(); i++) {
        cm[k[l][i]]++;
      }
    }
    bool flag = true;
    for (int j = 0; j < M; j++) {
      if (cm[j] % 2 == 1) {
        flag = false;
        break;
      }
    }
    if (flag) {
      ans++;
    }
  }
  std::cout << ans << std::endl;
  return 0;
}
