#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define all(x) x.begin(),x.end()
const int N = 1e6 + 5;
int n, m;
vector<int> adj[N], adj2[N];
int low[N], num[N], visited[N], dd, need[1 << 16];
int cnt, deg[N], mmb;
stack<int> st;
void dfs(int u){
st.push(u);
num[u] = low[u] = ++cnt;
for(auto x : adj2[u]){
if(num[x]) low[u] = min(low[u], num[x]);
else {
dfs(x);
low[u] = min(low[u], low[x]);
}
}
if(low[u] == num[u]){
int d = 0;
mmb++;
while(1){
int x = st.top(); st.pop();
d++;
num[x] = low[x] = n + 1;
if(x == u) break;
}
}
}
vector<int> valid;
void init(int p, int val, int cnt) {
if(cnt > m) return;
if(p == n) {
valid.push_back(val);
int res = 0;
for(int i = 1; i <= n; i++)
if((val >> (i - 1)) & 1)
for(int x : adj[i])
res |= (1 << (x - 1));
need[val] = res;
return;
}
init(p + 1, val | (1 << p), cnt + 1);
init(p + 1, val, cnt);
}
int bitmask(){
int dp[1 << 16], cntt[1 << 16];
fill(dp, dp + (1 << n), 1e9);
dp[0] = 0;
for (int mask = 0; mask < (1 << n); ++mask) {
cntt[mask] = __builtin_popcount(mask);
}
for (int mask = 0; mask < (1 << n); ++mask) {
int T = 0;
for (int i = 1; i <= n; ++i) {
if (!(mask & (1 << (i - 1))) && (need[1 << (i - 1)] & mask) == need[1 << (i - 1)]) {
T |= (1 << (i - 1));
}
}
for (int submask = T; submask > 0; submask = (submask - 1) & T) {
if (cntt[submask] > m) continue;
dp[mask | submask] = min(dp[mask | submask], dp[mask] + 1);
}
}
return dp[(1 << n) - 1];
}
int topo(){
int dp[N];
queue<int> q;
for(int i = 1; i <= n; i++)
if(!deg[i]) q.push(i);
while(q.size()) {
int u = q.front();
q.pop();
for(auto v : adj2[u]) {
deg[v]--;
dp[v] = max(dp[v], dp[u] + 1);
if(!deg[v]) q.push(v);
}
}
int ans = 0;
for(int i = 1; i <= n; i++)
ans = max(ans, dp[i] + 1);
return ans;
}
int main(){
if(fopen("vd.inp", "r")){
freopen("vd.inp", "r", stdin);
freopen("vd.out", "w", stdout);
}
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> m;
for(int i = 1; i <= n; i++){
int k; cin >> k;
for(int j = 1; j <= k; j++){
int x; cin >> x;
adj[i].push_back(x);
adj2[x].push_back(i);
deg[i]++;
if(x == i) {
cout << -1;
return 0;
}
}
}
for(int i = 1; i <= n; i++) if(!num[i]) dfs(i);
if(mmb != n) {
cout << -1;
return 0;
}
if(m >= n) cout << topo();
else {
init(0, 0, 0);
//sort(all(valid));
//valid.erase(unique(all(valid)), valid.end());
cout << bitmask();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZW5kbCAnXG4nCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSx4LmVuZCgpCmNvbnN0IGludCBOID0gMWU2ICsgNTsKaW50IG4sIG07CnZlY3RvcjxpbnQ+IGFkaltOXSwgYWRqMltOXTsKaW50IGxvd1tOXSwgbnVtW05dLCB2aXNpdGVkW05dLCBkZCwgbmVlZFsxIDw8IDE2XTsKaW50IGNudCwgZGVnW05dLCBtbWI7CnN0YWNrPGludD4gc3Q7CnZvaWQgZGZzKGludCB1KXsKICAgIHN0LnB1c2godSk7CiAgICBudW1bdV0gPSBsb3dbdV0gPSArK2NudDsKICAgIGZvcihhdXRvIHggOiBhZGoyW3VdKXsKICAgICAgICBpZihudW1beF0pIGxvd1t1XSA9IG1pbihsb3dbdV0sIG51bVt4XSk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRmcyh4KTsKICAgICAgICAgICAgbG93W3VdID0gbWluKGxvd1t1XSwgbG93W3hdKTsKICAgICAgICB9CiAgICB9CiAgICBpZihsb3dbdV0gPT0gbnVtW3VdKXsKICAgICAgICBpbnQgZCA9IDA7CiAgICAgICAgbW1iKys7CiAgICAgICAgd2hpbGUoMSl7CiAgICAgICAgICAgIGludCB4ID0gc3QudG9wKCk7IHN0LnBvcCgpOwogICAgICAgICAgICBkKys7CiAgICAgICAgICAgIG51bVt4XSA9IGxvd1t4XSA9IG4gKyAxOwogICAgICAgICAgICBpZih4ID09IHUpIGJyZWFrOwogICAgICAgIH0KICAgIH0KfQp2ZWN0b3I8aW50PiB2YWxpZDsKdm9pZCBpbml0KGludCBwLCBpbnQgdmFsLCBpbnQgY250KSB7CiAgICBpZihjbnQgPiBtKSByZXR1cm47CiAgICBpZihwID09IG4pIHsKICAgICAgICB2YWxpZC5wdXNoX2JhY2sodmFsKTsKICAgICAgICBpbnQgcmVzID0gMDsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICAgICAgaWYoKHZhbCA+PiAoaSAtIDEpKSAmIDEpCiAgICAgICAgICAgICAgICBmb3IoaW50IHggOiBhZGpbaV0pCiAgICAgICAgICAgICAgICAgICAgcmVzIHw9ICgxIDw8ICh4IC0gMSkpOwogICAgICAgIG5lZWRbdmFsXSA9IHJlczsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbml0KHAgKyAxLCB2YWwgfCAoMSA8PCBwKSwgY250ICsgMSk7CiAgICBpbml0KHAgKyAxLCB2YWwsIGNudCk7Cn0KCmludCBiaXRtYXNrKCl7CiAgICBpbnQgZHBbMSA8PCAxNl0sIGNudHRbMSA8PCAxNl07CiAgICBmaWxsKGRwLCBkcCArICgxIDw8IG4pLCAxZTkpOwogICAgZHBbMF0gPSAwOwogICAgZm9yIChpbnQgbWFzayA9IDA7IG1hc2sgPCAoMSA8PCBuKTsgKyttYXNrKSB7CiAgICAgICAgY250dFttYXNrXSA9IF9fYnVpbHRpbl9wb3Bjb3VudChtYXNrKTsKICAgIH0KICAgIGZvciAoaW50IG1hc2sgPSAwOyBtYXNrIDwgKDEgPDwgbik7ICsrbWFzaykgewogICAgICAgIGludCBUID0gMDsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICAgICAgaWYgKCEobWFzayAmICgxIDw8IChpIC0gMSkpKSAmJiAobmVlZFsxIDw8IChpIC0gMSldICYgbWFzaykgPT0gbmVlZFsxIDw8IChpIC0gMSldKSB7CiAgICAgICAgICAgICAgICBUIHw9ICgxIDw8IChpIC0gMSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IHN1Ym1hc2sgPSBUOyBzdWJtYXNrID4gMDsgc3VibWFzayA9IChzdWJtYXNrIC0gMSkgJiBUKSB7CiAgICAgICAgICAgIGlmIChjbnR0W3N1Ym1hc2tdID4gbSkgY29udGludWU7CiAgICAgICAgICAgIGRwW21hc2sgfCBzdWJtYXNrXSA9IG1pbihkcFttYXNrIHwgc3VibWFza10sIGRwW21hc2tdICsgMSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRwWygxIDw8IG4pIC0gMV07Cn0KCgppbnQgdG9wbygpewogICAgaW50IGRwW05dOwogICAgcXVldWU8aW50PiBxOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgaWYoIWRlZ1tpXSkgcS5wdXNoKGkpOwogICAgd2hpbGUocS5zaXplKCkpICB7CiAgICAgICAgaW50IHUgPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmb3IoYXV0byB2IDogYWRqMlt1XSkgewogICAgICAgICAgICBkZWdbdl0tLTsKICAgICAgICAgICAgZHBbdl0gPSBtYXgoZHBbdl0sIGRwW3VdICsgMSk7CiAgICAgICAgICAgIGlmKCFkZWdbdl0pIHEucHVzaCh2KTsKICAgICAgICB9CiAgICB9CiAgICBpbnQgYW5zID0gMDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIGFucyA9IG1heChhbnMsIGRwW2ldICsgMSk7CiAgICByZXR1cm4gYW5zOwp9CgppbnQgbWFpbigpewogICAgaWYoZm9wZW4oInZkLmlucCIsICJyIikpewogICAgICAgIGZyZW9wZW4oInZkLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oInZkLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgICAgaW50IGs7IGNpbiA+PiBrOwogICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gazsgaisrKXsKICAgICAgICAgICAgaW50IHg7IGNpbiA+PiB4OwogICAgICAgICAgICBhZGpbaV0ucHVzaF9iYWNrKHgpOwogICAgICAgICAgICBhZGoyW3hdLnB1c2hfYmFjayhpKTsKICAgICAgICAgICAgZGVnW2ldKys7CiAgICAgICAgICAgIGlmKHggPT0gaSkgewogICAgICAgICAgICAgICAgY291dCA8PCAtMTsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGlmKCFudW1baV0pIGRmcyhpKTsKICAgIGlmKG1tYiAhPSBuKSB7CiAgICAgICAgY291dCA8PCAtMTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGlmKG0gPj0gbikgY291dCA8PCB0b3BvKCk7CiAgICBlbHNlIHsKICAgICAgICBpbml0KDAsIDAsIDApOwogICAgICAgIC8vc29ydChhbGwodmFsaWQpKTsKICAgICAgICAvL3ZhbGlkLmVyYXNlKHVuaXF1ZShhbGwodmFsaWQpKSwgdmFsaWQuZW5kKCkpOwogICAgICAgIGNvdXQgPDwgYml0bWFzaygpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K