#include <bits/stdc++.h>
using namespace std;
using VI = vector<int>;
using ll = long long;
using PII = pair<int,int>;
const int mod = 19650827;
int n;
int h[2010];
int dp[1010][1010];
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>h[i];
memset(dp,0x3f,sizeof dp);
for(int i=1;i<=n;i++) dp[i][i] = 1;
for(int i=1;i<n;i++){
if(h[i] == h[i+1])dp[i][i+1] = 1;
else dp[i][i+1] = 2;
}
for(int len=3;len<=n;len++){
for(int i=1;i+len-1<=n;i++) {
int j = i + len - 1;
if(h[i] == h[j]) dp[i][j] = dp[i+1][j-1];
for(int k=i;k<j;k++){
dp[i][j] = min(dp[i][j] , dp[i][k] + dp[k+1][j]);
}
}
}
cout<<dp[1][n];
}
h[i] == h[j] 那么在消除[i + 1,j - 1]过程中可以消除掉