#include<iostream>

using namespace std;
int main() {
	int n, m;
	bool used[10][10] = {};
	bool b[10];
	cin >> n >> m;
	for (int i = 0; i < m; i++) {
		int k;
		cin >> k;
		for (int j = 0; j < k; j++) {
			int a;
			cin >> a, a--;
			used[i][a] = true;
		}

	}
	for (int i = 0; i < m; i++)cin >> b[i];
	
	int ans = 0;
	for (int i = 0; i < (1 << n); i++) {
		int cnt2 = 0;
		for (int j = 0; j < m; j++) {
			int cnt = 0;
			for (int k = 0; k < n; k++) {
				if (used[j][k] && (i & (1 << k)))cnt++;
			}
			if (cnt % 2 == b[j])cnt2++;		}
		if (cnt2 == m)ans++;

	}
	cout << ans << endl;
	return 0;
}