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

int main(){
  int n,m;
  cin >> n >> m;
  vector<vector<int>> vec(m);
  for(int i=0;i<m;++i){
	int k;
    cin >> k;
	vec.at(i).resize(k);
	for(int j=0;j<k;++j){
	  cin >> vec.at(i).at(j);
	  --vec.at(i).at(j);
	}
  }
  vector<int> p(m);
  for(int i=0;i<m;++i){
    cin >> p.at(i);
  }
  int ans=0;
  for(int i=0;i<(1<<n);++i){
	bool ok=true;
	for(int j=0;j<m;++j){
	  int c=0;
	  for(int id:vec.at(j)){
		if((i>>id)&1){
		  ++c;
		}
	  }
	  c%=2;
	  if(c!=p.at(j)){
		ok=false;
	  }
	}
	if(ok){
	  ++ans;
	}
  }
  cout << ans << endl;
}