#include <iostream>
#include <vector>
#include <queue>

using namespace std;

const int INF = 1e9;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n;
    cin>>n;

    vector<vector<int>> adj(n + 2);
    for (int i = 1; i <= n; ++i) {
        int sd;
        cin >> sd;
        for (int j = 0; j < sd; ++j) {
            int az;
            cin >> az;
            adj[az].push_back(i);
        }
    }

    long long mini = -1;

    for (int i = 1; i <= n; ++i) {
        vector<int> dist(n + 1, INF);
        queue<int> q;

        dist[i] = 0;
        q.push(i);

        bool moz = true;
        long long ob = 0;

        while (!q.empty()) {
            int u = q.front();
            q.pop();

            ob += dist[u] + 1;

            for (int v : adj[u]) {
                if (dist[v] == INF) {
                    dist[v] = dist[u] + 1;
                    q.push(v);
                }
            }
        }

        for (int j = 1; j <= n; ++j) {
            if (dist[j] == INF) {
                moz = false;
                break;
            }
        }

        if (moz==true) {
            if (mini == -1 || ob < mini) {
                mini = ob;
            }
        }
    }

    cout << mini;

    return 0;
}