using System;
using System.Collections.Generic;
using System.Linq;
using static System.Math;
using static System.Console;

namespace C_ABC128
{
    class MainClass
    {

        static int[] s;

        public static void Main(string[] args)
        {
            s = Array.ConvertAll(ReadLine().Split().ToArray(), int.Parse);
            var kslist = new List<int[]>();
            for (int i = 0; i < s[1]; i++)
            {
                int[] ks = Array.ConvertAll(ReadLine().Split().ToArray(), int.Parse);
                kslist.Add(ks);
            }
            int[] p = Array.ConvertAll(ReadLine().Split().ToArray(), int.Parse);
            int n = s[0];
            int m = s[1];

            var blst = new List<int>();
            for (int bit1 = 0; bit1 < (1 << n); ++bit1)
            {
                blst.Add(bit1);
            }


            for (int i = 0; i < m; i++)
            {
                for (int bit = 0; bit < (1 << n); ++bit)
                {
                    int ans = 0;
                    for (int j = 1; j <= kslist[i][0]; j++)
                    {
                        if ((bit & (1 << kslist[i][j])) >= 1)
                        {
                            ans++;
                        }
                    }
                    if (ans % 2 != p[i])
                    {
                        int idx = blst.IndexOf(bit);
                        if (idx >= 0)
                        {
                            blst.RemoveAt(idx);
                        }
                    }

                }
            

            }

            WriteLine(blst.Count);
        }
    }
}
