#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF = 1LL << 60;
#define REP(i, n) for (ll i = 0; i < n; i++)
#define FOR(i, a, n) for (ll i = a; i < n; i++)

int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
    int n,m;
    cin >> n >> m;
    vector<vector<int>>s(m);
    REP(i,m){
        int k;
        cin >> k;
        s[i].resize(k,0);
        REP(j,k){
            cin >> s[i][j];
        }
    }
    vector<int>p(m,0);
    REP(i,m) cin >> p[i];
    int cnt= 0;
    for(int i=1; i<(1<<n); i++){
        int light[n]= {0};
        for(int j=0; j<n; j++){
            if(i & 1<<j){
                light[j]= 1;
            }
        }
        int f= 1;
        REP(j,m){
            int cc= 0;
            REP(k,s[j].size()){
                if(light[s[j][k]-1]==1) cc++;
            }
            if(cc%2!=p[j]){
                f= 0;
                break;
            }
            if(f==0) break;
        }
        if(f) cnt++;
    }
    cout << cnt << endl;
}