1 var
2 f:array[0..10000,1..5,1..5] of longint;
3 a:array[1..10000] of integer;
4 n,i,j,k,p,q,b1,b2,minn:longint;
5
6 function min(a,b:longint):longint;
7 begin
8 if a>b then exit(b) else exit(a);
9 end;
10
11 function change(a,b:integer):integer;
12 begin
13 if a=b then exit(1) else
14 if a=5 then exit(2) else
15 if abs(a-b)=2 then
16 exit(4) else exit(3);
17 end;
18
19 begin
20 readln(n);
21 for i:=1 to n do
22 readln(a[i]);
23 for i:=1 to 5 do
24 for j:=1 to 5 do
25 f[0,i,j]:=1000000;
26 f[0,5,5]:=0;
27 for k:=1 to n do
28 for p:=1 to 5 do
29 for q:=1 to 5 do
30 f[k,p,q]:=maxlongint;
31 for k:=1 to n do
32 for p:=1 to 5 do
33 for q:=1 to 5 do
34 if f[k-1,p,q]<>maxlongint then
35 begin
36 b1:=change(p,a[k]);
37 b2:=change(q,a[k]);
38 f[k,a[k],q]:=min(f[k,a[k],q],f[k-1,p,q]+b1);
39 f[k,a[k],p]:=min(f[k,a[k],p],f[k-1,p,q]+b2);
40 end;
41 minn:=maxlongint;
42 for i:=1 to 5 do
43 for j:=1 to 5 do
44 if f[n,i,j]<minn then minn:=f[n,i,j];
45 writeln(minn);
46 end.