#include <bits/stdc++.h>

using namespace std;

int n,m;
int p[11];
vector<int> v[11];

int can(int x)
{
	for(int i=0;i<m;i++)
	{
		int cur=0;
		for(int j=0;j<v[i].size();j++)
		{
			cur+=(x&(1<<v[i][j]))>0;
		}
		if(cur%2 != p[i]%2) return 0;
	}
	return 1;
}

int main()
{
	cin >> n >> m;
	for(int i=0;i<m;i++)
	{
		int x;
		cin >> x;
		while(x--)
		{
			int y;
			cin >> y;
			v[i].push_back(y-1);
		}
	}
	for(int i=0;i<m;i++)
		cin >> p[i];
	int ans=0;
	for(int i=0;i<(1<<n);i++)
		ans+=can(i);
	cout << ans << endl;
}