#368. 书架还原

书架还原

题目描述

在一个偏远的图书馆里,有个书架上放着 nn 本书,每本书上都标有一个从 11nn 的唯一编号。

按照规矩,这些书应该按编号从小到大依次排列:11 号书位于最左端,22 号书紧随其后,以此类推,直到 nn 号书在最右端。这样的顺序不仅看起来整齐,也方便读者快速找到想借的书。

可昨天店里人来人往,借书还书忙得不可开交,书架上的顺序出现了错乱。现在,书架上的书变成了 a=(a1,a2,,an)a = (a_1, a_2, \ldots, a_n),其中 aia_i 表示第 ii 个位置上的书编号。

管理员决定动手整理书架,但时间有限,他希望用最少的操作把书的顺序恢复到正确的排列。每次操作,他可以挑选书架上任意两本书,交换它们的位置。例如,如果当前排列是 (3,1,2)(3, 1, 2),他可以交换第 11 本和第 22 本,得到 (1,3,2)(1, 3, 2),再交换第 22 本和第 33 本,得到 (1,2,3)(1, 2, 3)

你的任务是帮助管理员计算,最少需要进行多少次操作,才能让书架上的书的编号排列变为 (1,2,,n)(1, 2, \ldots, n)

输入格式

输入的第一行包含一个正整数 nn,表示书架上书的总数。

第二行包含 nn 个正整数 a1,a2,,ana_1, a_2, \ldots, a_n,相邻整数之间使用一个空格分隔,依次表示当前书架上每本书的编号。a1,a2,,ana_1, a_2, \ldots, a_n 是一个 11nn 的排列。

输出格式

输出一行包含一个整数表示答案,即将书架上的书恢复到正确排列所需的最少操作次数。

样例

3
3 1 2
2

数据范围

  • 对于 30%30\% 的评测用例,1n1031 \leq n \leq 10^31ain1 \leq a_i \leq na1,a2,,ana_1, a_2, \dots, a_n 各不相同;
  • 对于所有评测用例,1n1061 \leq n \leq 10^61ain1 \leq a_i \leq na1,a2,,ana_1, a_2, \dots, a_n 各不相同。