#d2879. 传话游戏

传话游戏

传话游戏

题目描述

有 nn 个人,编号为 11 到 nn。每个人都有一个固定的传话对象:第 ii 个人会把消息传给第 aia_i 个人(aia_i 可能等于 ii)。

游戏规则如下:每一轮由某个人 xx 发起。xx 会对 axa_x 说一个含有 tt 个 w 的字符串 Oww...wwf;若 t>1t>1,则 axa_x 会对 aaxa_{a_x} 说一个含有 t−1t-1 个 w 的同样形式的字符串;如此继续,直到有人听到恰好含 11 个 w 的字符串 Owf,这个人就是本轮的接收者。(任意时刻至多只有一轮游戏在进行。)

求最小的 tt(t≥1t\ge 1),使得对每个人 xx 都满足:若以 xx 发起的一轮由 yy 成为接收者,则以 yy 发起的一轮必由 xx 成为接收者。若不存在这样的 tt,输出 −1-1。

输入格式

第一行一个整数 nn(1≤n≤1501\le n\le 150),表示人数。

第二行 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n,其中第 ii 个数表示第 ii 个人的传话对象 aia_i。

输出格式

输出最小的 tt;若不存在,输出 −1-1。

样例输入

4
2 3 1 4

样例输出

3