#include<stdio.h>
#include<string.h>
#define N 300
#define inf 0x3fffffff
int mark[N],link[N],n,m;
int map[N][N];
int find(int u) {
int i;
for(i=1;i<=m;i++) {
if(!mark[i]&&map[u][i]) {
mark[i]=1;
if(link[i]==-1||find(link[i])) {
link[i]=u;
return 1;
}
}
}
return 0;
}
int main() {
int i,k,s,t;
while(scanf("%d%d",&n,&m)!=EOF) {
memset(map,0,sizeof(map));
memset(link,-1,sizeof(link));
for(i=1;i<=n;i++) {
scanf("%d",&s);
while(s--) {
scanf("%d",&t);
map[i][t]=1;
}
}
k=0;
for(i=1;i<=n;i++) {
memset(mark,0,sizeof(mark));
k+=find(i);
}
printf("%d
",k);
}
return 0;
}