#include<bits/stdc++.h>

using namespace std;
int k[15],s[15][15],p[15];
int l[15]={};
int n,m;
int dfs(int a){
	if(a==n){
		int ans=0;
		for(int i=0;i<m;i++){
			int cnt=0;
			for(int j=0;j<k[i];j++){
				if(l[s[i][j]]==1)cnt++;
			}
			if(cnt%2!=p[i])break;
			if(i==m-1)ans++;
		}
		return ans;
	}
	else{
		int ans=0;
		l[a]=1;ans+=dfs(a+1);
		l[a]=0;ans+=dfs(a+1);
		return ans;
	}
	
}
int main(){
	cin>>n>>m;
	for(int i=0;i<m;i++){
		cin>>k[i];
		for(int j=0;j<k[i];j++){
			cin>>s[i][j];
			s[i][j]--;
		}
	}
	for(int i=0;i<m;i++)cin>>p[i];
	cout<<dfs(0);
	return 0;
}