#include <bits/stdc++.h>
using namespace std;

int main() {
  int N, M;
  cin >> N >> M;
  vector <vector<int>> s(M);
  vector <int> p(M);

  for(int i = 0; i < M; i++) {
    int sw;
    cin >> sw;
    s.at(i).resize(sw);
    for (int j = 0; j < sw; j++) {
      cin >> s.at(i).at(j);
    }
  }
  for (int i = 0; i < M; i++) {
    cin >> p.at(i);
  }
  int result = 0;
  for (int k = 0; k < (1 << N); k++){
    bitset <10> on(k);
    bitset <10> lamp(0);
    int mcount = 0;
    for (int i = 0; i < M; i++) {

      for (j : s.at(i)) {
        lamp.set(s.at(i).at(j));
      }

      auto onlamp = on & lamp;
      int count = 0;
      for (int j = 0; j < 10; j++) {
        if (onlamp.test(j)) count++;
      }
      if (count % 2 == p.at(i)) {
        mcount++;
      }

      if (i == (M - 1) && mcount == M) {
        result++;
      }

    }
  }

  cout << result << endl;
  return 0;
}
