#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
int a[17][17],p[17],vis[17];
bool check(){
	for(int i=1;i<=m;++i){
		int tmp=0;
		for(int j=1;j<=a[i][0];++j)
			if(vis[a[i][j]]){
				tmp++;
				tmp%=2;
			}
		if(tmp!=p[i])
            return 0;
	}
	return 1;
}
void dfs(int x){
	if(x==n+1){
		if(check())
            ans++;
		return ;
	}
	for(int i=x+1;i<=n+1;++i){
		vis[i]=1;
		dfs(i);
		vis[i]=0;
	}
}
int main() {
	cin>>n>>m;
	for(int i=1;i<=m;++i){
		cin>>a[i][0];
		for(int j=1;j<=a[i][0];++j)
			cin>>a[i][j];
	}
	for(int i=1;i<=m;++i)
		cin>>p[i];
	dfs(0);
	cout<<ans;
}
