N = gets.to_i A = gets.split.map(&:to_i) graph = Array.new(N) { [] } N.times do |u| v = A[u] - 1 graph[u] << v graph[v] << u end count = 0 visited = [false] * N N.times do |s| next if visited[s] visited[s] = true count += 1 stack = [s] while (u = stack.pop) count += 1 graph[u].each do |v| next if visited[v] visited[v] = true stack << v end end end puts count.even? ? 1 : -1