N, M = map(int, input().split())

s = []
for i in range(M):
    i = list(map(int, input().split()))
    s.append(i[1:])

p = list(map(int, input().split()))

ans = 0
# i=0,1,2,...,2**N-1
# 全てのスイッチの場合の数
for i in range(2**N):
    flag = True

    # 各条件について
    for j in range(len(s)):
        # sのうち、ONになっているスイッチの数
        cnt = 0
        # 各スイッチについて
        for k in range(N):
            # そのスイッチがsに含まれる　かつ　ONになっている場合
            if (k + 1) in s[j] and ((i >> k) & 1):
                cnt += 1
        # 一つでも条件を満たさなかった時点でそのiで全点灯は不可能
        if cnt % 2 != p[j]:
            flag = False
            break

    if flag:
        ans += 1

print(ans) N, M = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M s = [] s [] for i in range(M):
    i = list(map(int, input().split()))
    s.append(i[1:]) i range(M) range M i = list(map(int, input().split())) i list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split s.append(i[1:]) s.append s append i[1:] i 1: 1 p = list(map(int, input().split())) p list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split ans = 0 ans 0 for i in range(2**N):
    flag = True

    # 各条件について
    for j in range(len(s)):
        # sのうち、ONになっているスイッチの数
        cnt = 0
        # 各スイッチについて
        for k in range(N):
            # そのスイッチがsに含まれる　かつ　ONになっている場合
            if (k + 1) in s[j] and ((i >> k) & 1):
                cnt += 1
        # 一つでも条件を満たさなかった時点でそのiで全点灯は不可能
        if cnt % 2 != p[j]:
            flag = False
            break

    if flag:
        ans += 1 i range(2**N) range 2**N 2 N flag = True flag True for j in range(len(s)):
        # sのうち、ONになっているスイッチの数
        cnt = 0
        # 各スイッチについて
        for k in range(N):
            # そのスイッチがsに含まれる　かつ　ONになっている場合
            if (k + 1) in s[j] and ((i >> k) & 1):
                cnt += 1
        # 一つでも条件を満たさなかった時点でそのiで全点灯は不可能
        if cnt % 2 != p[j]:
            flag = False
            break

     j range(len(s)) range len(s) len s cnt = 0 cnt 0 for k in range(N):
            # そのスイッチがsに含まれる　かつ　ONになっている場合
            if (k + 1) in s[j] and ((i >> k) & 1):
                cnt += 1
        # 一つでも条件を満たさなかった時点でそのiで全点灯は不可能
         k range(N) range N if (k + 1) in s[j] and ((i >> k) & 1):
                cnt += 1
        # 一つでも条件を満たさなかった時点でそのiで全点灯は不可能
         (k + 1) in s[j] and ((i >> k) & 1) (k + 1) in s[j] k + 1 k 1 s[j] s j (i >> k) & 1 i >> k i k 1 cnt += 1 cnt 1 if cnt % 2 != p[j]:
            flag = False
            break

     cnt % 2 != p[j] cnt % 2 cnt 2 p[j] p j flag = False flag False break if flag:
        ans += 1 flag ans += 1 ans 1 print(ans) print ans N, M = map(int, input().split()) map(int, input().split()) N s = [] [] s flag = True True flag p = list(map(int, input().split())) list(map(int, input().split())) p cnt += 1 1 cnt M = map(int, input().split()) map(int, input().split()) M ans = 0 0 ans flag = False False flag ans += 1 1 ans i = list(map(int, input().split())) list(map(int, input().split())) i cnt = 0 0 cnt
N, M = map(int, input().split())

s = []
for i in range(M):
    i = list(map(int, input().split()))
    s.append(i[1:])

p = list(map(int, input().split()))

ans = 0
# i=0,1,2,...,2**N-1
# 全てのスイッチの場合の数
for i in range(2**N):
    flag = True

    # 各条件について
    for j in range(len(s)):
        # sのうち、ONになっているスイッチの数
        cnt = 0
        # 各スイッチについて
        for k in range(N):
            # そのスイッチがsに含まれる　かつ　ONになっている場合
            if (k + 1) in s[j] and ((i >> k) & 1):
                cnt += 1
        # 一つでも条件を満たさなかった時点でそのiで全点灯は不可能
        if cnt % 2 != p[j]:
            flag = False
            break

    if flag:
        ans += 1

print(ans)
