#include"bits/stdc++.h"
using namespace std;
#define REP(k,m,n) for(int (k)=(m);(k)<(n);(k)++)
#define rep(i,n) REP((i),0,(n))

int main()
{
	int N;
	cin >> N;

	vector<queue<int>>A(N);
	rep(i, N) {
		rep(j, N - 1) {
			int now;
			cin >> now;
			A[i].push(now - 1);
		}
	}

	int res = 0;
	map<int, set<int>>opp;
	vector<int> now, next;
	rep(i, N)now.push_back(i);

	while (true) {
		bool wake = false;
		for (int me : now)if (!A[me].empty()) {
			wake = true;
			int other = A[me].front();

			if (opp[me].find(other) != opp[me].end()) {
				// 相手を見つけた -> 自分のところから取得
				next.push_back(me);
				next.push_back(other);
				A[me].pop();
				A[other].pop();
				opp[me].erase(other);
			}
			else {
				// 相手が見つからない -> 相手に要求
				opp[other].insert(me);
			}
		}
		if (!wake)break;
		res++;
		now = next;
		next.clear();
	}
	for (auto& row : A)if (!row.empty()) {
		cout << -1 << endl;
		return 0;
	}
	cout << res << endl;
	return 0;
}
