#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimization("Ofast")
#pragma GCC optimization("unroll-loops")
#pragma GCC target("avx2,avx,fma")
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  int i, j, n, m, k, a, l;
  cin >> n >> m;
  vector<vector<int> > v(n);
  vector<int> cnt;
  vector<int> p(m);
  for (i = 0; i < m; i++) {
    cin >> k;
    for (j = 0; j < k; j++) {
      cin >> a;
      v[a - 1].push_back(j);
    }
  }
  for (i = 0; i < m; i++) cin >> p[i];
  a = 1 << n;
  int cn = 0;
  for (i = 0; i < a; i++) {
    cnt.resize(m, 0);
    for (j = 0; j < n; j++)
      if (i & (1 << j))
        for (l = 0; l < v[j].size(); l++) cnt[v[j][l]]++;
    k = 0;
    for (j = 0; j < m; j++)
      if (cnt[j] % 2 == p[j]) k++;
    if (k == m) cn++;
    cnt.clear();
  }
  cout << cn;
  return 0;
}
