#D0790. 按钮追踪

按钮追踪

题目描述

小 B 在玩一个解谜游戏。游戏台上有 NN 个发光的按钮,对应编号为 11NN,我们称编号为 ii 的按钮为按钮 ii。游戏开始时,只有按钮 11 是亮起的状态。

游戏规定:玩家只能按下亮着的按钮

每个按钮上都写着一个数字,按钮 ii 上写着 aia_i1aiN1 \le a_i \le N),这表示:当你按下按钮 ii,按钮 ii 会熄灭,同时按钮 aia_i 会亮起。

小 B 的目标是让按钮 22 亮起。请你帮他计算:从按钮 11 出发,最少需要按多少次按钮才能让按钮 22 亮起?

如果无论如何都无法让按钮 22 亮起(即陷入了不包含 22 的循环),则输出 1-1

输入格式

输入共 N+1N + 1 行。

第一行,一个整数 NN,表示按钮的数量。

接下来 NN 行,每行一个整数,其中第 ii 行的整数为 aia_i,表示按下按钮 ii 后下一个亮起的按钮编号。

输出格式

输出共一行。

若能到达按钮 22,输出一个整数表示最少按键次数;若不能到达,输出 1-1

5
3
1
2
4
5
2
4
3
4
1
2
-1

样例解释

对于样例 1:初始按钮 11 亮起。按 11 \rightarrow 按钮 33 亮;按 33 \rightarrow 按钮 22 亮。共按了 22 次(按 1133)。

对于样例 2:路径为 $1 \rightarrow 3 \rightarrow 1 \rightarrow 3 \rightarrow \dots$,死循环,无法到达 22

数据规模与约定

子任务 分值 限制
11 6060 2N1052 \le N \le 10^5,保证能到达按钮 22
22 4040 2N1052 \le N \le 10^5

对于 100%100\% 的数据,2N1052 \le N \le 10^51aiN1 \le a_i \le N