#include<bits/stdc++.h>
using namespace std;
int n,m,cnt = 0, k[11],p[11],s[11][11],sw[11];
int target;
void dfs(int num, int now){
    if(num > n){
        if(now == target) cnt++;
        return ;
    }
    for(int i = 0; i <= 1; i++) {
        dfs(num + 1, now ^ (i * sw[num]));
    }
}
int main(){
    cin >> n >> m;
    for(int i = 1; i <= m; i++){
        cin >> k[i];
        for(int j = 0; j < k[i]; j++){
            cin >> s[i][j];
            sw[s[i][j]] |= 1 << i;
        }
    }
    for(int i = 1; i <= m; i++) {
        cin >> p[i];
        target |= p[i] << i;
    } 
    dfs(1);
    cout << cnt << endl;
}
