#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> sw[14];
int p[14];
int ans = 0;
void can(int state){
	int ret = 0;
	for(int i = 0;i<m;i++){
		int cnt = 0;
		for(int j : sw[i]){
			if((1<<j)&state)	cnt++;
		}
		if(cnt % 2 == p[i])
		ret += (1<<i);
	}
	if(ret == (1<<m)-1)	ans++;
}
int main() {
	cin>>n>>m;
	for(int i = 0;i<m;i++)
	{
		int t;
		cin>>t;
		int q;
		while(t--){
			cin>>q;
			sw[i].push_back(--q);
		}
	}
	for(int i = 0;i<m;i++)	cin>>p[i];
	for(int i = 0; i<(1<<n);i++)
		can(i);
	cout<<ans;
	return 0;
}