1 #include<iostream>
2 #include<algorithm>
3 #include<cstring>
4 #include<cstdio>
5 using namespace std;
6 int n,tot,s[1001],color[1001],f[1001][1001];
7 int main()
8 {int last,i,j,k,x;
9 //freopen("file.in","r",stdin);
10 scanf("%d",&n);
11 last=-1;tot=0;
12 for (i=1;i<=n;i++)
13 {
14 scanf("%d",&x);
15 if (x==last)
16 {
17 s[tot]++;
18 }
19 else
20 {
21 tot++;
22 s[tot]=1;
23 color[tot]=x;
24 last=x;
25 }
26 }
27 n=tot;
28 memset(f,127/3,sizeof(f));
29 for (i=1;i<=n;i++)
30 if (s[i]>=2)
31 f[i][i]=1;
32 else f[i][i]=2;
33 for (i=1;i<=n-1;i++)
34 {
35 for (j=1;j<=n-i;j++)
36 {
37 for (k=j;k<=i+j-1;k++)
38 {
39 f[j][j+i]=min(f[j][j+i],f[j][k]+f[k+1][j+i]);
40 }
41 if (color[j]==color[j+i])
42 {
43 f[j][j+i]=min(f[j][j+i],f[j+1][j+i-1]+(s[j]+s[j+i]>=3?0:1));
44 }
45
46 }
47 }
48 cout<<f[1][n];
49 }