#include <bits/stdc++.h>
using namespace std;
int a[502], n;
int dp[502][502];
int func(int st, int en) {
  if (st > n) return 0;
  if (st > en) return 1;
  if (st == en) return 1;
  if (st + 1 == en) {
    if (a[st] == a[en]) return 1;
    return 2;
  }
  if (dp[st][en] != -1) return dp[st][en];
  int ans = 1 + func(st + 1, en);
  for (int i = st + 1; i <= en; i++) {
    int temp;
    if (a[st] == a[i]) {
      temp = func(st + 1, i - 1);
      if (i + 1 <= en) temp += func(i + 1, en);
      ans = min(ans, temp);
    }
  }
  return dp[st][en] = ans;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
  }
  memset(dp, -1, sizeof(dp));
  int ans = func(1, n);
  cout << ans << endl;
}
