using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class Program {
    static void Main(string[] args) {
        //入力
        string X = Console.ReadLine();
        int N = int.Parse(X.Split(' ')[0]);
        int M = int.Parse(X.Split(' ')[1]);

        int[] k = new int[M];
        int[][] s = new int[M][];

        var p_list = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();
        int p = 0;
        for (int i = 0; i < M; i++) {
            p |= p_list[i] << i;
        }

        for (int i = 0; i < M; i++) {
            string x = Console.ReadLine();
            k[i] = int.Parse(x.Split(' ')[0]);
            for (int j = 0; j < k[i]; j++) {
                s[i][j] = int.Parse(x.Split(' ')[j + 1]) - 1;  //スイッチの番号はゼロスタートにする
            }
        }

        var A = new List<int>();

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

        int ans = 0;

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

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

        Console.WriteLine(ans);
    }
}