
#include <iostream>
#include <vector>
#include <bitset>

using namespace std;

int main(){
	int N=0, M=0;
	cin >> N >> M;

	vector<unsigned int> s(M, 0);
	unsigned int p;

	for(int i=0; i<M; i++){
		int k;
		cin >> k;
		for(int j=0; j<k; j++){
			int l;
			cin >> l;
			l--;
			s[i]|=(1<<l);
		}
	}

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

	int r=0;
	for(int i=0; i<(1<<N); i++){
		int f=1;
		for(int j=0; j<M; j++){
			if(((p&(1<<j))>>j)!=(__builtin_popcount(i&s[j])&(1))){
				f=0; break;
			}
		}
		r+=f;
	}

	cout << r << endl;

	return 0;

}
