1 #include <iostream>
2 using namespace std;
3 #define SIZE 12
4 int data[SIZE];
5 int data1[SIZE];
6 int n;
7 int minstep;
8 void xipai(int m);
9 bool shun();
10 void dfs(int step);
11 int main()
12 {
13 freopen("in.txt","r",stdin);
14 minstep=6;
15 while(scanf("%d",&n)!=EOF)
16 {
17 for(int i=0;i<n;i++)
18 {
19 cin >>data[i];
20 data1[i]=data[i];
21 }
22 dfs(0);
23 cout <<minstep<<endl;
24 }
25 return 0;
26 }
27 void xipai(int m)
28 {
29 int data2[SIZE];
30 for(int i=0;i<n;i++)
31 data2[i]=data1[i];
32 int j=0;
33 for(int i=m;i>0;i--)
34 {
35 if(i>n/2)
36 {
37 data2[n/2-j-1+n/2]=data1[n/2-j-1];
38 data2[n/2+j-n/2]=data1[n/2+j];
39 }
40 else
41 {
42 data2[n/2-j-1+i]=data1[n/2-j-1];
43 data2[n/2+j-i]=data1[n/2+j];
44 }
45 j++;
46 if(j>n/2-1)
47 break;
48 }
49 for(int i=0;i<n;i++)
50 data1[i]=data2[i];
51 }
52 bool shun()
53 {
54 if(data1[0]<data1[1])
55 {
56 for(int i=0;i<n-1;i++)
57 {
58 if(data1[i]>data1[i+1])
59 return false;
60 }
61 }
62 if(data1[0]>data1[1])
63 {
64 for(int i=0;i<n-1;i++)
65 {
66 if(data1[i]<data1[i+1])
67 return false;
68 }
69 }
70 return true;
71 }
72 void dfs(int step)
73 {
74 if(shun())
75 {
76 if(step<minstep)
77 minstep=step;
78 return;
79 }
80 if(step==5)
81 return;
82 int temp[SIZE];
83 for(int i=0;i<n;i++)
84 temp[i]=data1[i];
85 for(int i=0;i<n;i++)
86 {
87 xipai(i);
88 dfs(step+1);
89 for(int j=0;j<n;j++)
90 data1[j]=temp[j];
91 }
92 }