n = gets.to_i

a = n.times.map do |_|
  gets.split.map(&:to_i)
end

i = 1
while true do
  is_match = false
  n.times do |j|
    b = a[j].first.to_i
    if b != 0 && j == a[b-1].first.to_i - 1
      a[j][0] = 0
      a[b-1][0] = 0
      is_match = true
    end
  end

  if !is_match
    p -1
    exit
  end

  n.times do |j|
    if !a[j].empty? && a[j].first.to_i == 0
      a[j].shift
    end
  end

  is_empty = true
  n.times do |j|
    if !a[j].empty?
      is_empty = false
      break
    end
  end

  if is_empty
    p i
    exit
  end

  i += 1
end

p  -1