#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m,ans,p[15];
vector<int> g[15];
bool b[15];
bool check(){
	int sum;
	for(int i=0;i<m;i++){
		sum=0;
		for(int j=0;j<g[i].size();j++)sum+=b[g[i][j]];
		if(sum%2!=p[i]%2)return false;
	}
	return true;
}
void dfs(int x){
	if(x>=n){
		if(check())ans++;
		return ;
	}
	dfs(x+1);
	b[x]=true;
	dfs(x+1);
	b[x]=false;
}
int main(){
	cin >> n >> m;
	for(int i=0;i<m;i++){
		int x,y;
		cin >> x;
		for(int j=0;j<x;j++){
			cin >> y;
			g[i].push_back(--y);
		}
	}
	for(int i=0;i<m;i++)cin >> p[i];
	dfs(0);
	cout << ans;
	return 0;
}