#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main() {
	int N, M;
	cin >> N >> M;
	int k[10], s[10][10];
	for (int i = 0; i < M; i++) {
		cin >> k[i];
		for (int j = 0; j < k[i]; j++) {
			cin >> s[i][j];
			s[i][j]--;
		}
	}
	int p[10];
	for (int i = 0; i < M; i++) {
		cin >> p[i];
	}
	int ans = 0;
	for (int i = 0; i < (1 << N); i++) {
		bool flag = true;
		for (int j = 0; j < M; j++) {
			int c = 0;
			for (int l = 0; l < k[j]; l++) {
				if ((i >> s[j][l]) & 1)c++;
			}
			if (c % 2 != p[j])flag = false;
		}
		if (flag)ans++;
	}
	cout << ans << endl;
	return 0;
}