#arc132b. [arc132_b]Shift and Reverse

[arc132_b]Shift and Reverse

题目描述

给定一个 1,dots,n1,\\dots,n 的排列:p1,dots,pnp_1,\\dots,p_n。在这个排列上,你可以任意次数以任意顺序执行以下操作:

  • 反转整个排列。也就是说,将 p1,p2,dots,pnp_1,p_2,\\dots,p_n 重新排列成 pn,pn1,dots,p1p_n,p_{n-1},\\dots,p_1
  • 将开头的元素移到末尾。也就是说,将 p1,p2,dots,pnp_1,p_2,\\dots,p_n 重新排列成 p2,dots,pn,p1p_2,\\dots, p_n, p_1

找出将排列按升序排序所需的最小操作次数。在给定的输入中,保证这些操作可以按升序对排列进行排序。

约束条件

  • 2leqnleq1052 \\leq n \\leq 10^5
  • p1,dots,pnp_1,\\dots,p_n1,dots,n1,\\dots,n 的排列。
  • 题目说明中的操作可以将 p1,dots,pnp_1,\\dots,p_n 按升序排序。

输入

从标准输入中以以下格式给出输入:

nn p1p_1 dots\\dots pnp_n

输出

输出将排列按升序排序所需的最小操作次数。


示例输入1

3
1 3 2

示例输出1

2

可以通过以下两个操作将其按升序排序。

  1. 将开头的元素移到末尾:现在你有 3,2,13, 2, 1
  2. 反转整个排列:现在你有 1,2,31, 2, 3

不能在少于两次操作的情况下对其进行排序,因此答案是 22


示例输入2

2
2 1

示例输出2

1

执行任意一个操作都可以按升序排序。

不能在少于一次操作的情况下对其进行排序,因此答案是 11


示例输入3

10
2 3 4 5 6 7 8 9 10 1

示例输出3

3

可以通过以下三个操作将其按升序排序。

  1. 反转整个排列:现在你有 1,10,9,8,7,6,5,4,3,21,10,9,8,7,6,5,4,3,2
  2. 将开头的元素移到末尾:现在你有 10,9,8,7,6,5,4,3,2,110,9,8,7,6,5,4,3,2,1
  3. 反转整个排列:现在你有 1,2,3,4,5,6,7,8,9,101,2,3,4,5,6,7,8,9,10

不能在少于三次操作的情况下对其进行排序,因此答案是 33


示例输入4

12
1 2 3 4 5 6 7 8 9 10 11 12

示例输出4

0

不需要任何操作。