#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
const long double eps = 1e-7;
const int inf = 1000000010;
const long long INF = 10000000000000010LL;
const int mod = 1000000007;
const int MAXN = 5010, LOG = 20;
int n, m, k, u, v, x, y, t, a, b, ans;
int dp[MAXN][MAXN];
string s;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> s;
  for (int i = 0; i < n; i++) dp[i][i] = 1;
  for (int l = 1; l < n; l++)
    for (int i = 0; i + l < n; i++) {
      int j = i + l;
      dp[i][j] = min(dp[i][j - 1] + (s[j - 1] != s[j]),
                     dp[i + 1][j] + (s[i] != s[i + 1]));
      for (int x = i + 1; x <= j - 1; x++) {
        if (s[i] == s[x]) dp[i][j] = min(dp[i][j], dp[i + 1][x - 1] + dp[x][j]);
        if (s[x] == s[j]) dp[i][j] = min(dp[i][j], dp[i][x] + dp[x + 1][j - 1]);
      }
      if (s[i] == s[j]) {
        dp[i][j] = min(dp[i][j], dp[i + 1][j - 1] + 1);
        for (int x = i + 1; x <= j - 1; x++)
          if (s[i] == s[x])
            dp[i][j] = min(dp[i][j], dp[i + 1][x - 1] + dp[x + 1][j - 1] + 1);
      }
    }
  cout << dp[0][n - 1] << '\n';
  return 0;
}
