using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
	class Program
	{
		static void Main(string[] args)
		{
			var input = Console.ReadLine().Split(' ');
			int n = int.Parse(input[0]);    // スイッチの数
			int m = int.Parse(input[1]);    // 電球の数

			var lights = new List<Light>(m);
			for (int i = 0; i < m; i++)
			{
				var arg = Console.ReadLine();
				lights.Add(new Light(n, arg));
			}
			var rems = Console.ReadLine().Split(' ');
			for (int i = 0; i < m; i++)
			{
				lights[i].SetRemainder(int.Parse(rems[i]));
			}

			int maxSwitchPattern = (int)Math.Pow(2, n) - 1;
			int countAllLightOn = 0;
			for (int i = 0; i <= maxSwitchPattern; i++)
			{
				bool isLightOn = true;
				// 各電球について確認
				for (int j = 0; j < m; j++)
				{
					if (!lights[j].IsLightOn(i))
					{
						isLightOn = false;
						break;
					}
				}
				if (isLightOn)
				{
					countAllLightOn++;
				}
			}

			Console.WriteLine(countAllLightOn);
		}

		public class Light
		{
			int mTotalSw = 0;
			int mRemainder = 0;
			int mSwitch = 0;

			public Light(int totalSw, string input)
			{
				mTotalSw = totalSw;
				var args = input.Split(' ');
				int switchCount = int.Parse(args[0]);
				var switchIndex = new List<int>(switchCount);
				for (int i = 0; i < switchCount; i++)
				{
					switchIndex.Add(int.Parse(args[i + 1]) - 1);
				}
				for (int i = 0; i < mTotalSw; i++)
				{
					mSwitch = mSwitch << 1;
					if (switchIndex.Contains(i))
					{
						mSwitch |= 1;
					}
				}
			}

			public void SetRemainder(int remainder)
			{
				mRemainder = remainder;
			}

			public bool IsLightOn(int switchState)  // switchState : N(<=10)ビットの整数. S1, S2, .... SN の状態を表すもの。ON ならビットを立てる
			{
				if (switchState == 0)
				{
					return false;    // 全てOFFの場合は余りの数に関係なく非点灯？
				}
				var state = switchState & mSwitch;   // 関連づいていてONになっているビットが立つ
				int onSwitchCount = 0;
				for (int i = 0; i < mTotalSw; i++)
				{
					if ((state & 1) == 1)
					{
						onSwitchCount++;
					}
					state = state >> 1;
				}

				return (onSwitchCount % 2 == mRemainder);
			}
		}
	}
}

