# スイッチONとOFFで、電球と繋がっている繋がっていないも、0or1なので、ビット演算を使用するのが吉

# スイッチと電球の繋がりをビット列で表す
# スイッチ(行）と電球(列)のマトリクスを作って、繋がっているところに1、繋がっていないところに0
# 行方向に見るとスイッチがどの電球に繋がっているかのビット列ができる
# intで持ってもよいので、100 は　4　

# 電球が点いているか点いていないかをビット列で表す
# スイッチを押すたびに、1つ前のスイッチが繋がっている電球にそのスイッチも繋がっていれば、偶奇が変化してスイッチの点滅が変化する
# スイッチを押すたびにxorをとる
# 電球の点滅とpが一致していればok


n, m = map(int, input().split())

# kはスイッチ、sはスイッチが繋がっている電球を表す
k = []
s = []

for _ in range(m):
    tmp = tuple(map(int, input().split()))
    k.append(tmp[0])
    s.append(set(tmp[1:-1]))
 
p = tuple(map(int, input().split()))
 
# print(k, s, p, sep="\n")

ans = 0

# スイッチの押し方を全部試す
for i in range(2 ** n):
    # 各iでonになっている電球の数
    light_on = 0
 
    # 電球jについて
    for j in range(m):
        switch_on = 0
 
        for k in range(n):
            # onになっているスイッチ（kビット目が立っているか）
            if (i >> k) & 1:
                # 電球jとつながっているものならカウント
                # sはスイッチkが繋がっている電球jのリスト
                # スイッチは1からなので、k+1
                if k + 1 in s[j]:
                    switch_on += 1
 
        # onになっているスイッチの個数がp[j]に等しいなら電球jは点灯している
        if switch_on % 2 == p[j]:
            light_on += 1
 
    # 全ての電球が点灯しているならカウント
    if light_on == m:
        # print(bin(i))
        ans += 1
 
print(ans)