#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int n;
int dp[N][N][2];
int main() {
cin >> n;
string s;
cin >> s;
s = " " + s;
for (int len = 2; len <= n; ++len) {
for (int l = 1; l + len - 1 <= n; ++l) {
int r = l + len - 1;
if (len == 2 && s[l] == s[r]) {
dp[l][r][0] = dp[l][r][1] = 1;
} else if (s[l] == s[r]) {
dp[l][r][0] = (dp[l][r][1] |= dp[l + 1][r - 1][1]) * (dp[l + 1][r - 1][0] + 1);
} else {
for (int k = l + 1; k < r; k++) {
if (dp[l][k][1] && dp[k + 1][r][1]) {
dp[l][r][0] = max(dp[l][r][0], dp[l][k][0] + dp[k + 1][r][0] + 1);
dp[l][r][1] = 1;
}
}
}
}
}
cout << dp[1][n][0];
return 0;
}