#include <bits/stdc++.h>
int main(void) {
  int n, m, k[10], s[10][10], i, p[10], j, ans = 0, max = -1, cnt[10] = {0};
  int f[10] = {0};
  scanf("%d%d", &n, &m);
  for (i = 0; i < n; i++) {
    scanf("%d", &k[i]);
    for (j = 0; j < k[i]; j++) {
      scanf("%d", &s[i][j]);
    }
  }
  for (i = 0; i < n; i++) {
    scanf("%d", &p[i]);
  }
  for (f[0] = 0; f[0] <= 1; f[0]++) {
    for (f[1] = 0; f[1] <= 1; f[1]++) {
      for (f[2] = 0; f[2] <= 1; f[2]++) {
        for (f[3] = 0; f[3] <= 1; f[3]++) {
          for (f[4] = 0; f[4] <= 1; f[4]++) {
            for (f[5] = 0; f[5] <= 1; f[5]++) {
              for (f[6] = 0; f[6] <= 1; f[6]++) {
                for (f[7] = 0; f[7] <= 1; f[7]++) {
                  for (f[8] = 0; f[8] <= 1; f[8]++) {
                    for (f[9] = 0; f[9] <= 1; f[9]++) {
                      for (i = 0; i < m; i++) {
                        for (j = 0; j < k[i]; j++) {
                          if (f[s[i][j]] == 1) cnt[i]++;
                        }
                        if (cnt[i] % 2 == p[i]) ans++;
                      }
                      if (ans == n) max++;
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  printf("%d\n", max);
  return 0;
}
