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

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

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

ans=0
for i in range(2**N):
  isOK=True
  for j in range(M):
    stat=0
    for k in l[j]:
      k-=1
      if i&(1<<k):
        stat=(stat+1)%2
    if stat!=p[j]:
      isOK=False
  if isOK:
    ans+=1
print(ans) N,M=map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split M l=[] l [] for i in range(M):
  l.append(list(map(int,input().split()))[1:]) i range(M) range M l.append(list(map(int,input().split()))[1:]) l.append l append list(map(int,input().split()))[1:] (map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split 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):
  isOK=True
  for j in range(M):
    stat=0
    for k in l[j]:
      k-=1
      if i&(1<<k):
        stat=(stat+1)%2
    if stat!=p[j]:
      isOK=False
  if isOK:
    ans+=1 i range(2**N) range 2**N 2 N isOK=True isOK True for j in range(M):
    stat=0
    for k in l[j]:
      k-=1
      if i&(1<<k):
        stat=(stat+1)%2
    if stat!=p[j]:
      isOK=False
   j range(M) range M stat=0 stat 0 for k in l[j]:
      k-=1
      if i&(1<<k):
        stat=(stat+1)%2
     k l[j] l j k-=1 k 1 if i&(1<<k):
        stat=(stat+1)%2
     i&(1<<k) i 1<<k 1 k stat=(stat+1)%2 stat (stat+1)%2 stat+1 stat 1 2 if stat!=p[j]:
      isOK=False
   stat!=p[j] stat p[j] p j isOK=False isOK False if isOK:
    ans+=1 isOK ans+=1 ans 1 print(ans) print ans p=list(map(int,input().split())) list(map(int,input().split())) p ans+=1 1 ans k-=1 1 k isOK=False False isOK N,M=map(int,input().split()) map(int,input().split()) N M=map(int,input().split()) map(int,input().split()) M isOK=True True isOK stat=0 0 stat stat=(stat+1)%2 (stat+1)%2 stat ans=0 0 ans l=[] [] l
N,M=map(int,input().split())

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

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

ans=0
for i in range(2**N):
  isOK=True
  for j in range(M):
    stat=0
    for k in l[j]:
      k-=1
      if i&(1<<k):
        stat=(stat+1)%2
    if stat!=p[j]:
      isOK=False
  if isOK:
    ans+=1
print(ans)