#include <bits/stdc++.h>
int main() {
  int N, M;
  std::cin >> N;
  std::cin >> M;
  std::vector<std::bitset<10>> s;
  for (int j = 0; j < M; j++) {
    int v;
    std::cin >> v;
    int bit = 0;
    for (int i = 0; i < v; i++) {
      int x;
      std::cin >> x;
      bit += 1 << (x - 1);
    }
    s.emplace_back(bit);
  }
  std::vector<int> P;
  P.resize(M);
  for (auto&& p : P) {
    std::cin >> p;
  }
  int lit = 0;
  for (int i = 0; i < (std::pow(2, N)); i++) {
    std::bitset<10> test(i);
    for (int j = 0; j < M; j++) {
      if ((s[j] & test).count() % 2 != P[j]) goto next;
    }
    lit++;
  next:;
  }
  std::cout << lit << std::endl;
}
