n, m = map(int,input().split())
s = list(list(map(int, input().split())) for _ in range(m)) 
p = list(map(int,input().split()))
ans = 0
for i in range(1<<n):
    # 全switch(n)のon/offパターン数
    sw = [False]*m
    # 各電球の点灯リストを作成
    for j in range(m):
        # 各電球について
        cnt = 0
        for k in range(1,len(s[j])):
            if i>>s[j][k]-1&1:
                cnt += 1
        if cnt%2==p[j]:
            sw[j]=True
    if all(sw):
        ans+=1
print(ans) n, m = map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split m s = list(list(map(int, input().split())) for _ in range(m)) s list(list(map(int, input().split())) for _ in range(m)) list list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split 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(1<<n):
    # 全switch(n)のon/offパターン数
    sw = [False]*m
    # 各電球の点灯リストを作成
    for j in range(m):
        # 各電球について
        cnt = 0
        for k in range(1,len(s[j])):
            if i>>s[j][k]-1&1:
                cnt += 1
        if cnt%2==p[j]:
            sw[j]=True
    if all(sw):
        ans+=1 i range(1<<n) range 1<<n 1 n sw = [False]*m sw [False]*m [False] False m for j in range(m):
        # 各電球について
        cnt = 0
        for k in range(1,len(s[j])):
            if i>>s[j][k]-1&1:
                cnt += 1
        if cnt%2==p[j]:
            sw[j]=True
     j range(m) range m cnt = 0 cnt 0 for k in range(1,len(s[j])):
            if i>>s[j][k]-1&1:
                cnt += 1
         k range(1,len(s[j])) range 1 len(s[j]) len s[j] s j if i>>s[j][k]-1&1:
                cnt += 1
         i>>s[j][k]-1&1 i>>s[j][k]-1 i s[j][k]-1 s[j][k] [j] s j k 1 1 cnt += 1 cnt 1 if cnt%2==p[j]:
            sw[j]=True
     cnt%2==p[j] cnt%2 cnt 2 p[j] p j sw[j]=True sw[j] sw j True if all(sw):
        ans+=1 all(sw) all sw ans+=1 ans 1 print(ans) print ans m = map(int,input().split()) map(int,input().split()) m ans = 0 0 ans p = list(map(int,input().split())) list(map(int,input().split())) p n, m = map(int,input().split()) map(int,input().split()) n cnt = 0 0 cnt s = list(list(map(int, input().split())) for _ in range(m)) list(list(map(int, input().split())) for _ in range(m)) s sw = [False]*m [False]*m sw ans+=1 1 ans cnt += 1 1 cnt
n, m = map(int,input().split())
s = list(list(map(int, input().split())) for _ in range(m)) 
p = list(map(int,input().split()))
ans = 0
for i in range(1<<n):
    # 全switch(n)のon/offパターン数
    sw = [False]*m
    # 各電球の点灯リストを作成
    for j in range(m):
        # 各電球について
        cnt = 0
        for k in range(1,len(s[j])):
            if i>>s[j][k]-1&1:
                cnt += 1
        if cnt%2==p[j]:
            sw[j]=True
    if all(sw):
        ans+=1
print(ans)