N,M = map(int,input().split())
target = [[num-1 for num in list(map(int,input().split()))[1:]] for _ in range(M)]
#各sについてのリストを元にした配列を、それぞれの値から1を引いて作成
judge = list(map(int,input().split()))
#2で割った余り=最終判定のリスト
cnt = 0

for i in range(2 ** N):
#スイッチの状態について全探索
#N = 2の時、スイッチは[00,01,10,11]の4 = 2^N通り
	switches = [0] * M
	for k in range(M):
	#各電球についてfor文を回す
		for j in range(N):
		#各スイッチについてfor文を回す
			if ((i >> j) & 1) and j in target[k]:
			#jビット右シフト(ex:6 = 0b110 >> 1 → 0b11 = 3)かつ、1と論理積をとる
			#⇨下位1ケタのビットが立っているか = j番目スイッチが押されているかどうかに対応を判定
			#j番目のスイッチが押されており、かつj番目のスイッチが電球Kの点灯条件であれば
			#+1カウント
				switches[k] += 1

	switches =	[switch % 2 for switch in switches]
	print(switches)
	#2で割ったあまりを算出し、点灯するかどうかのリストに
	if switches == judge:
		cnt += 1
		
print(cnt)