#include <bits/stdc++.h>
using namespace std;
const long long INF = 2e18, MOD = 998244353, MAXN = 2e6 + 1;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
signed main() {
  ios::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  long long n;
  cin >> n;
  string s, t;
  cin >> s;
  t = s[0];
  for (long long i = 1; i < n; i++) {
    if (s[i] != s[i - 1]) t += s[i];
  }
  s = t;
  n = s.length();
  vector<vector<long long>> dp(n, vector<long long>(n, INF));
  for (long long i = 0; i < n; i++) dp[i][i] = 1;
  for (long long i = n - 2; i >= 0; i--) {
    for (long long j = i + 1; j < n; j++) {
      if (s[i] == s[j]) {
        for (long long k = i; k < j; k++) {
          if (s[k] == s[j]) {
            dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j - 1]);
          }
        }
      } else {
        for (long long k = i; k < j; k++) {
          dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j]);
        }
      }
    }
  }
  cout << dp[0][n - 1];
}
