#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m;
  cin >> n >> m;
  vector<vector<int>> c(m, vector<int>(n, 0));
  for (int i = 0; i < m; i++) {
    int k;
    cin >> k;
    for (int j = 0; j < k; j++) {
      int s;
      cin >> s;
      c.at(i).at(s - 1) = 1;
    }
  }
  vector<int> p(n);
  for (int i = 0; i < m; i++) cin >> p.at(i);
  int a = 0;
  for (int i = 0; i < (1 << n); i++) {
    vector<int> b(n);
    int x = i;
    for (int d = 0; d < n; d++) {
      b.at(d) = x % 2;
      x /= 2;
    }
    bool f = 1;
    for (int j = 0; j < m; j++) {
      int s = 0;
      for (int k = 0; k < n; k++) s += b.at(k) * c.at(j).at(k);
      f = (s % 2 == p.at(j) ? f : 0);
    }
    a += (f ? 1 : 0);
  }
  cout << a << endl;
}
