#include<iostream> #include<list> #include<queue> #define N 105 int n,m; unsigned short ar[N]; int n_set; int tmp; unsigned short set[10000000]; unsigned short set_; int idx; int idx_n; void creat_set(int dep) { if(dep>=n){ set[idx++]=set_; return; } creat_set(dep+1); set_|=ar[dep]; creat_set(dep+1); set_^=ar[dep]; } int main() { while (std::cin>>n>>m){ for(int i=0;i!=n;i++){ std::cin>>n_set; for(int j=0;j!=n_set;j++){ std::cin>>tmp; ar[i]=(ar[i])|(1<<(8-tmp+1)); } } creat_set(0); std::sort(set,set+idx); idx_n=1; for(int i=2;i!=idx;i++){ if(set[i]!=set[i-1]){ idx_n++; } } std::cout<<idx_n<<std::endl; memset(ar,0,sizeof(ar)); memset(set,0,sizeof(set)); idx=idx_n=0; } }