#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	int N,M;
	cin >> N >> M;
	vector<int> a(N,0);
	for(int i=0; i<M; ++i){
		int k;
		cin >> k;
		for(int j=0; j<k; ++j){
			int s;
			cin >> s;
			s--;
			a[s] =  a[s] | (1 << i);
		}
	}

	int p = 0;
	for(int i=0; i<M; ++i){
		int x;
		cin >>x;
		p = p | (x << i);
	}

	int ans = 0;

	for(int s= 0; s < (1<<N); ++s){
		int t=0;

		for(int i=0; i<N; ++i){
			if( (s >>i) & 1){
				t = t ^ a[i];
			}
		}

		if( t== p){
			ans++;
		}

	}
	cout << ans << '\n';
	return 0;
}