传送门
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一个长度为 n 的数组 a(下标从 1 开始),你位于数组的起点(位置 1),目标是到达终点(位置 n)。你可以进行以下两种操作:

1. 相邻移动
你可以将当前位置从 i 移动到 i-1i+1(前提是该位置存在)。
2. 传送操作
如果你当前在位置 ia_i = x,则你可以传送到任意其他位置 j(满足 j \neq ia_j = x)。

你的任务是求出从位置 1 到位置 n 的最少操作次数。

输入描述:

- 第一行包含一个整数 n,满足 1 \leq n \leq 10^6
- 第二行包含 n 个整数 a_1, a_2, \dots, a_n,满足 1 \leq a_i \leq 10^5

输出描述:

- 输出一个整数,表示从位置 1 到位置 n 的最少操作次数。
示例1

输入

复制
6
1 2 3 4 5 3

输出

复制
3

说明

1->2->3->6