n, m = map(int, input().split())
lights = [list(map(int, input().split()))[1:] for i in range(m)]
P = list(map(int, input().split()))

res = 0
# bit列の組み合わせについて
for bit in range(1 << n):
    ok = True
    # 各電球について
    for i in range(m):
        # 電球iのonの状態のスイッチの個数
        cnt = 0
        # 電球の各スイッチについて
        for v in lights[i]:
            v -= 1
            # 電球のスイッチがvのon/off判定
            if bit & (1 << v):
                cnt += 1
        # 電球iは点灯しているか判定
        if cnt % 2 != P[i]:
            ok = False
    if ok:
        res += 1
print(res) n, m = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split m list(map(int, input().split()))[1:] for i in range(m) for i in range(m) i range(m) range m for i in range(m) list(map(int, input().split()))[1:] (map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split 1: 1 lights = [list(map(int, input().split()))[1:] for i in range(m)] lights [list(map(int, input().split()))[1:] for i in range(m)] P = list(map(int, input().split())) P list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split res = 0 res 0 for bit in range(1 << n):
    ok = True
    # 各電球について
    for i in range(m):
        # 電球iのonの状態のスイッチの個数
        cnt = 0
        # 電球の各スイッチについて
        for v in lights[i]:
            v -= 1
            # 電球のスイッチがvのon/off判定
            if bit & (1 << v):
                cnt += 1
        # 電球iは点灯しているか判定
        if cnt % 2 != P[i]:
            ok = False
    if ok:
        res += 1 bit range(1 << n) range 1 << n 1 n ok = True ok True for i in range(m):
        # 電球iのonの状態のスイッチの個数
        cnt = 0
        # 電球の各スイッチについて
        for v in lights[i]:
            v -= 1
            # 電球のスイッチがvのon/off判定
            if bit & (1 << v):
                cnt += 1
        # 電球iは点灯しているか判定
        if cnt % 2 != P[i]:
            ok = False
     i range(m) range m cnt = 0 cnt 0 for v in lights[i]:
            v -= 1
            # 電球のスイッチがvのon/off判定
            if bit & (1 << v):
                cnt += 1
        # 電球iは点灯しているか判定
         v lights[i] lights i v -= 1 v 1 if bit & (1 << v):
                cnt += 1
        # 電球iは点灯しているか判定
         bit & (1 << v) bit 1 << v 1 v cnt += 1 cnt 1 if cnt % 2 != P[i]:
            ok = False
     cnt % 2 != P[i] cnt % 2 cnt 2 P[i] P i ok = False ok False if ok:
        res += 1 ok res += 1 res 1 print(res) print res n, m = map(int, input().split()) map(int, input().split()) n lights = [list(map(int, input().split()))[1:] for i in range(m)] [list(map(int, input().split()))[1:] for i in range(m)] lights P = list(map(int, input().split())) list(map(int, input().split())) P v -= 1 1 v ok = True True ok m = map(int, input().split()) map(int, input().split()) m res = 0 0 res ok = False False ok res += 1 1 res cnt = 0 0 cnt cnt += 1 1 cnt
n, m = map(int, input().split())
lights = [list(map(int, input().split()))[1:] for i in range(m)]
P = list(map(int, input().split()))

res = 0
# bit列の組み合わせについて
for bit in range(1 << n):
    ok = True
    # 各電球について
    for i in range(m):
        # 電球iのonの状態のスイッチの個数
        cnt = 0
        # 電球の各スイッチについて
        for v in lights[i]:
            v -= 1
            # 電球のスイッチがvのon/off判定
            if bit & (1 << v):
                cnt += 1
        # 電球iは点灯しているか判定
        if cnt % 2 != P[i]:
            ok = False
    if ok:
        res += 1
print(res)