#include<bits/stdc++.h>
using namespace std;
vector<int> S[15];
int P[15],N,M;
int main()
{
	cin>>N>>M;
	for(int i=0;i<M;i++)
	{
		int x;
		cin>>x;
		for(int j=0;j<x;j++)
		{
			int y;
			cin>>y;
			S[i].push_back(y);
		}
	}
	for(int i=0;i<M;i++)
		cin>>P[i];
	int res=0;
	for(int state=0;state<(1<<N);state++)
	{
		bool f=true;
		for(int i=0;i<M;i++)
		{
			int cnt=0;
			for(int j=0;j<S[i].size();j++)
				if(state>>(S[i][j]-1)&1)
					cnt++;
			if(cnt%2!=P[i])
				f=false;
		}
		res+=f;
	}
	cout<<res<<endl;
	return 0;
}