#D0790. 按钮追踪

按钮追踪

题目描述

小 B 在玩一个解谜游戏。游戏台上有 NN 个发光的按钮,编号为 11NN。游戏开始时,只有按钮 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
3
3
2
1
2

样例解释

对于样例 1:初始按钮 11 亮起。按下 11,按钮 33 亮;按下 33,按钮 22 亮。共按了 22 次。

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

对于样例 3:路径为 1321 \rightarrow 3 \rightarrow 2,共 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