N,M = map(int,input().split())
ks = [list(map(int, input().split())) for _ in range(M)]
p = list(map(int,input().split()))
ans=0
for i in range(2**N):
    b="0"*(N-len(bin(i)[2:]))+bin(i)[2:]
    #print(b)
    on=0
    for j in range(M):#各電球ごと　#電球1はスイッチ1,2,5のうち奇数個ついていればよい
        c=0#その電球に必要なスイッチの数用のカウント
        for k in range(N):
            if k+1 in ks[j][1:]:#例えばスイッチ1が電球1に必要なスイッチのリストふ含まれているとき
                if b[k]=="1":
                    c+=1
        if c%2==p[j]:
            on+=1
    if on==M:
        ans+=1
print(ans) N,M = map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split M list(map(int, input().split())) for _ in range(M) for _ in range(M) _ range(M) range M for _ in range(M) list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split ks = [list(map(int, input().split())) for _ in range(M)] ks [list(map(int, input().split())) for _ 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 ans=0 ans 0 for i in range(2**N):
    b="0"*(N-len(bin(i)[2:]))+bin(i)[2:]
    #print(b)
    on=0
    for j in range(M):#各電球ごと　#電球1はスイッチ1,2,5のうち奇数個ついていればよい
        c=0#その電球に必要なスイッチの数用のカウント
        for k in range(N):
            if k+1 in ks[j][1:]:#例えばスイッチ1が電球1に必要なスイッチのリストふ含まれているとき
                if b[k]=="1":
                    c+=1
        if c%2==p[j]:
            on+=1
    if on==M:
        ans+=1 i range(2**N) range 2**N 2 N b="0"*(N-len(bin(i)[2:]))+bin(i)[2:] b "0"*(N-len(bin(i)[2:]))+bin(i)[2:] "0"*(N-len(bin(i)[2:])) "0" N-len(bin(i)[2:]) N len(bin(i)[2:]) len bin(i)[2:] (i) bin i 2: 2 bin(i)[2:] (i) bin i 2: 2 on=0 on 0 for j in range(M):#各電球ごと　#電球1はスイッチ1,2,5のうち奇数個ついていればよい
        c=0#その電球に必要なスイッチの数用のカウント
        for k in range(N):
            if k+1 in ks[j][1:]:#例えばスイッチ1が電球1に必要なスイッチのリストふ含まれているとき
                if b[k]=="1":
                    c+=1
        if c%2==p[j]:
            on+=1
     j range(M) range M c=0 c 0 for k in range(N):
            if k+1 in ks[j][1:]:#例えばスイッチ1が電球1に必要なスイッチのリストふ含まれているとき
                if b[k]=="1":
                    c+=1
         k range(N) range N if k+1 in ks[j][1:]:#例えばスイッチ1が電球1に必要なスイッチのリストふ含まれているとき
                if b[k]=="1":
                    c+=1
         k+1 in ks[j][1:] k+1 k 1 ks[j][1:] [j] ks j 1: 1 if b[k]=="1":
                    c+=1
         b[k]=="1" b[k] b k "1" c+=1 c 1 if c%2==p[j]:
            on+=1
     c%2==p[j] c%2 c 2 p[j] p j on+=1 on 1 if on==M:
        ans+=1 on==M on M ans+=1 ans 1 print(ans) print ans M = map(int,input().split()) map(int,input().split()) M p = list(map(int,input().split())) list(map(int,input().split())) p ans+=1 1 ans c+=1 1 c N,M = map(int,input().split()) map(int,input().split()) N ans=0 0 ans on=0 0 on b="0"*(N-len(bin(i)[2:]))+bin(i)[2:] "0"*(N-len(bin(i)[2:]))+bin(i)[2:] b ks = [list(map(int, input().split())) for _ in range(M)] [list(map(int, input().split())) for _ in range(M)] ks c=0 0 c on+=1 1 on
N,M = map(int,input().split())
ks = [list(map(int, input().split())) for _ in range(M)]
p = list(map(int,input().split()))
ans=0
for i in range(2**N):
    b="0"*(N-len(bin(i)[2:]))+bin(i)[2:]
    #print(b)
    on=0
    for j in range(M):#各電球ごと　#電球1はスイッチ1,2,5のうち奇数個ついていればよい
        c=0#その電球に必要なスイッチの数用のカウント
        for k in range(N):
            if k+1 in ks[j][1:]:#例えばスイッチ1が電球1に必要なスイッチのリストふ含まれているとき
                if b[k]=="1":
                    c+=1
        if c%2==p[j]:
            on+=1
    if on==M:
        ans+=1
print(ans)