#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int factorial(int x)
{
	int tmp = x;
	for (int i = 1; i < x - 1; ++i)
		tmp *= x - i;
	return tmp;
}

int main() {
	int N, M;
	cin >> N >> M;
	int k[10];
	int s[10][10];
	int p[10];
	int D[10000][10];
	for (int i = 0; i < pow(2, N); i++) {
		for (int m = 0; m < M; m++) {
			D[i][m] = 0;
		}
	}
	for (int i = 0; i < M; i++) {
		cin >> k[i];
		for (int j = 0; j < k[i]; j++) {
			cin >> s[i][j];
		}
	}
	for (int i = 0; i < M; i++) {
		cin >> p[i];
	}
	int x;
	int ans = 0;
	for (int i = 0; i < pow(2, N); i++) {
		for (int j = 0; j < N; j++) {
			x = pow(2, j);
			for (int m = 0; m < M; m++) {
				if ((i / x) % 2 == 1) {
					{
						for (int l = 0; l < k[m]; l++) {
							if (s[m][l] == j + 1) D[i][m]++;
						}
					}
				}
			}
		}
	}
	for (int i = 0; i < pow(2, N); i++) {
		for (int m = 0; m < M; m++) {
			if (D[i][m] % 2 != p[m]) {
				ans -= 1;
				break;
			}
		}
		ans++;
	}
	cout << ans << endl;
	return 0;
}