
def main():
  # N: スイッチの数
  # M: 電球の数
  N,M = list(map(int, input().split()))

  # スイッチの電球の対応表
  # i番目のスイッチに繋がっている電球をビットシフトしながら格納する
  # 0b011 => 3番目繋がっていない、2番目/1番目は繋がっているとおく
  switch_table = [0] * N

  ans = 0

  # 電球とスイッチの対応表を作る
  for i in range(M):
    row = list(map(int, input().split()))
    k = row[0]

    for j in range(1, k+1):
      # 繋がっているスイッチの番号
      # 1-indexed なので、0-indexedにするため1を引く
      s = row[j] - 1

      # 1をiだけビットシフトしたものとORをとると
      # s番目のスイッチに繋がっている電球の情報が入る
      # 0b001 => 1番目と繋がっている
      # 0b100(1 << 2) 3番目と繋がっている
      # 上の 0b001 OR 0b100 => 0b101となり3番目と1番目が繋がっているという寸法
      switch_table[s] |= 1 << i


  # 
  p = 0
  for value in list(map(int, input().split())):
    p |= value << i

  # スイッチを全探索する
  for i in range(2 ** N):
    t = 0

    for j in range(N):
      if(i >> j & 1):
        t ^= switch_table[j]

    if(t == p):
      ans += 1

  print(ans)

if __name__ == "__main__":
    main()