#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int main(){
	int N, M; cin >> N >> M;
	vector<int> S[M];
	for(int i=0; i<M; i++){
		int k; cin >> k;
		for(int j=0; j<k; j++){
			int s; cin >> s;
			s--;
			S[i].push_back(s);
		}
	}
	int p[M];
	for(int i=0; i<M; i++){
		cin >> p[i];
	}
	int ans = 0;
	for(int i=0; i<(1<<N); i++){
		int f = 0;
		for(int j=0; j<M; j++){
			int cnt = 0;
			for(int t=0; t<S[j].size(); t++){
				if(i & (1<<S[j][t])) cnt++;
			}
			if(cnt % 2 != p[j]) f = 1;
		}
		if(!f) ans++; 
	}
	cout << ans << endl;
	return 0;
}
