

def main():
    n, m = map(int, input().split())
    # ｋは何個のスイッチにつながっているか、ｓはスイッチの番号
    s = []; k = [] # s : どのスイッチとつながってるか、インデックスは電球を指す、　k: 電球が何個のスイッチとつながっているか
    for _ in range(m):
        tmp_k, *tmp_s = list(map(int, input().split()))
        k.append(tmp_k); s.append(tmp_s)
    p = list(map(int, input().split()))

    res = 0
    # スイッチの状態は２進数表記で表す。スイッチはｎ個あるので
    for bit in range(2**n):
        ok = True
        # スイッチの状態を表すbitを2進数で表したとき1のところがそのスイッチが点灯してることに対応している
        # それをi = 0,...,n-1で探索する
        for i in range(m):
            cnt = 0
            for v in s[i]:
                #このときのiは点灯してるスイッチの番号と同じ
                if bit & (1 << v):
                    cnt += 1
            if cnt % 2 != p[i]:
                ok = False

        if ok: # okなら全ての電球が付いているということ
            res += 1

    print("res : ", res)



if __name__ == "__main__":
    main()