转动转盘

成绩 0 开启时间 2013年01月1日 星期二 17:30
折扣 0.8 折扣时间 2013年01月1日 星期二 17:30
允许迟交 关闭时间 2013年01月1日 星期二 17:30
输入文件 thewheel.in 输出文件 thewheel.out

题目描述:

在Admin小时候呆着的幼儿园里有一个巨大的转盘。有N个小朋友按照一定顺序坐在转盘边缘的N个座位上,所有座位之间的距离都相等。有些小朋友之间可能会闹矛盾,为了使得幼儿园更加的和谐,你需要重新安排小朋友的排列。
初始情况下正北方向座位上坐着的小朋友编号为1,后依次按照顺时针方向将小朋友编号为2到N。如下图:

t

我们可以用一个序列描述一个转盘上小朋友的情况,从正北方向开始,依次按照顺时针方向将小朋友的编号列出来,如上图对应的序列就是{1,2,3,4,5}。
现在你只可以用过下面三种方式操作:
1.将整个转盘顺时针旋转1/N圈。这样操作会使得序列变成{5,1,2,3,4}。
2.将整个转盘逆时针旋转1/N圈。这样操作会使得序列变成{2,3,4,5,1}。
3.交换正北方向的座位和正北顺时针方向第一个座位上的小朋友。这样操作会使得序列变成{2,1,3,4,5}。
现在给出你目标序列,输出你最少需要操作多少步。如果这个数大于30,则输出-1。

 输入格式:

第1行为一个数n,表示有n个小朋友。
第2行有n个数,表示目标序列

 

输出格式

共一行,表示最少操作多少步。

 

样例输入:

4

1 3 2 4

 

样例输出:

3

样例解释:
共经过三次操作
1.将序列{1,2,3,4}变为{2,3,4,1}
2.将序列{2,3,4,1}变为{3,2,4,1}
3.将序列{3,2,4,1}变为{1,3,2,4}

数据规模和约定:
对于30%的数据 n<=5
对于50%的数据 n<=8
对于100%的数据 2<=n<=20