#include<bits/stdc++.h>
using namespace std;
const int N=20;
int n,m,k[N],s[N][N],ans;
bool p[N],open[N];
bool check()
{
	for(int i=0;i<m;i++)
	{
		int sum=0;
		for(int j=0;j<k[i];j++)
			if(open[s[i][j]-1])
				sum++;
		if(sum%2!=p[i])return false;
	}
	return true;
}
void dfs(int now)
{
	if(now==n)
	{
		if(check())ans++;
		return;
	}
	dfs(now+1);
	open[now]=true;
	dfs(now+1);
	open[now]=false;
}
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];
	}
	for(int i=0;i<m;i++)cin>>p[i];
	dfs(0);
	cout<<ans<<endl;
	return 0;
}