#include<bits/stdc++.h> usingnamespacestd ; constint maxn = 222; bool graph[maxn][maxn]; bool used[maxn]; int stalls[maxn]; int n , m ;
intfound( int st ) { for( int i = 1 ; i <= n ; i++) { if( graph[st][i] && !used[i] ) { used[i] = true; if( stalls[i] == 0 || found( stalls[i] ) ) { stalls[i] = st ; return1 ; } } } return0 ; }
intmain() { ios::sync_with_stdio(false); cin.tie(0); freopen("stall4.in","r",stdin); freopen("stall4.out","w",stdout); cin >> n >> m ; for( int i = 1 ; i <= n ; i++) { int num ; cin >> num ; for( int j = 1 ; j <= num ; j++) { int t ; cin >> t ; graph[i][t] = true ; } } int ans = 0 ; for( int i = 1 ; i <= n ; i++) { memset( used , 0 , sizeof( used ) ) ; ans += found( i ) ; } cout << ans << endl ; }