#include using namespace std; int main () { ios::sync_with_stdio(false); long long n, k; while ( cin >> n >> k ) { vector , long long > > in; unordered_map< long long, long long > part; long long sum = 0, iL = 0, iR = 0, diff = 0; long long mini = 0x7fffffff; bool solved = false; bool ctr = false; bool start = true; for ( long long i = 0; i < n; ++i ) { long long x, cnt = 0; cin >> x; set samples; for ( long long j = 0; j < x; ++j ) { long long y; cin >> y; if ( samples.insert(y).second == true ) ++cnt; } in.push_back({samples, x}); } while ( start || iL != 0 ) { for ( auto i : in[iR].first ) { ++part[i]; if ( part[i] == 1 ) ++diff; } sum += in[iR].second; //cout << diff << " " << iL << " " << iR << endl; while( diff == k ) { mini = min(sum, mini); solved = true; for( auto n : in[iL].first) { --part[n]; if( part[n] == 0) { --diff; } } sum -= in[iL].second; ++iL; if( iL == n ) { iL = 0; start = false; break; } //cout << diff << " " << k << endl; } ++iR; if( iR == n) { ctr = true; iR = 0; } if( iR == iL && ( iL == 0 || ctr ) ) { break; } } if(solved) cout << mini << endl; else cout << -1 << endl; } return 0; }