n,m=map(int,raw_input().split())
check=[]
for i in  xrange(m):
    s=map(int,raw_input().split())
    s.pop(0)
    check.append(s)
ans=0
p=map(int,raw_input().split())
for i in xrange(0,pow(2,n)):
    switch=[0 for j in xrange(n)]
    j=0
    k=i
    while j < n:
        switch[j]=k%2
        k=k/2
        j += 1
    #print switch
    flag=0
    ###########
    ###########
    odd=0
    even=0
    for j in switch:
        if j ==0:
            even += 1
        else:
            odd += 1
    kk=0
    for j in check:
        onn=0
        off=0
        for k in j:
            if switch[k-1]==0:
                off += 1
            else:
                onn += 1
        if p[kk]%2==0:
            if onn%2==1:
                flag=-1
        else:
            if onn%2==0:
                flag=-1
        kk += 1
    if flag == -1:
        ans += 0
    else:
        ans += 1
print ans
        