#include<iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
   int n,m ;
   cin >> n >> m;
   int k[m];
  for(int i=0;i<m;i++) cin>> k[i];
   int s[m][n] ;
  for(int i=0;i<m;i++){
    for(int j=0;j<n;j++){
     s[i][j]=0;
    }
  }
  for(int i=0;i<m;i++){
    for(int j=0;j<k[m];j++){
      cin >> s[i][j];
    }
  }  
  int p[m];
  for(int i=0;i<m;i++) cin>> p[i];
    int ans = 0;
  for(int bit=0;bit<(1<<n);bit++){
      bool ison[n]={false};
      for(int i = 0; i < n; i++) {
            if(bit & (1 << i)) {
                ison[i] = true;
            }
        }
    int allOn=1;
      for(int i = 0; i < m; i++) {
            int sum = 0;
            for(int j=0;j<k[i];j++) {
                int ind = s[i][j];
                sum += ison[ind] ? 1 : 0;
            }
            allOn *= (sum % 2 == p[i]) ? 1 : 0;
        }
     ans += allOn;
  }
  
      cout << ans << endl;
    return 0;
}
