#include <bits/stdc++.h>
using namespace std;
int n, a[505], d[505][505];
int dp(int l, int r) {
  if (l > r) return 0;
  if (r == l) return 1;
  if (d[l][r] != 10000000) {
    return d[l][r];
  }
  if (l + 1 <= r && a[l] == a[l + 1]) {
    d[l][r] = min(d[l][r], dp(l + 2, r) + 1);
  }
  for (int k = l + 2; k <= r; k++)
    if (a[l] == a[k]) d[l][r] = min(d[l][r], dp(l + 1, k - 1) + dp(k + 1, r));
  d[l][r] = min(d[l][r], dp(l + 1, r) + 1);
  return d[l][r];
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) d[i][j] = 10000000;
  cout << dp(0, n - 1);
  return 0;
}
