5 int a
[maxn
],f
[maxn
][maxn
]={0};
7 int min(int p
, int q
, int r
) {
13 int query(int l
, int r
) {
15 if (f
[l
][r
]) return f
[l
][r
];
16 if (a
[l
]==a
[r
]) return f
[l
][r
]=query(l
+1,r
-1); else
17 return f
[l
][r
]=min(query(l
+1,r
),query(l
,r
-1),query(l
+1,r
-1))+1;
21 freopen("queue.in","r",stdin
);
22 freopen("queue.out","w",stdout
);
25 for (i
=1; i
<=n
; i
++) scanf("%d",&(a
[i
]));
26 printf("%d\n",query(1,n
));