#include<iostream>
#include<cstdio>
using namespace std;
int k[15],a[15][15],p[15],d[15],n,m,ans;
void dfs(int x){
	if(x>n){
		int tot=0;
		for(int i=1;i<=m;i++){
			int num=0;
			for(int j=1;j<=k[i];j++)
				num+=d[a[i][j]];
			if(num%2==p[i]) tot++;
		}
		if(tot==m) ans++;
		return;
	}
	d[x]=1;
	dfs(x+1);
	d[x]=0;
	dfs(x+1);
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		scanf("%d",&k[i]);
		for(int j=1;j<=k[i];j++)
			scanf("%d",&a[i][j]);
	}
	for(int i=1;i<=m;i++)
		scanf("%d",&p[i]);
	dfs(1);
	cout<<ans;
	return 0; 
}