#include<bits/stdc++.h>
#define REP(i,n) for(int i=0;i<(n);++i)
#define vi vector<int>
#define vvi vector<vi >
using namespace std;

int main(){
	int n,m;
	cin>>n>>m;
	
	vvi vec(m);
	REP(i,m){
		int k;
		cin>>k;
		vec[i].resize(k);
		REP(j,k){
			cin>>vec[i][j];
			vec[i][j]--;
		}
	}
	
	vi p(m);
	REP(i,m) cin>>p[i];
	
	int ans=0;
	for(int i=0;i<(1<<n);++i){//スイッチの付き方全通り試す.
		bool ok=true;
		for(int j=0;j<m;++j){//全ての電球を試す.
			int cnt=0;
			for(int id:vec[j]){
				if((i>>id)&1) cnt++;
			}
			if((cnt%2)!=p[j]) ok=false;
		}
		if(ok) ans++;
	}
	
	cout<<ans<<endl;
}//解説参考.bit全探索.
