#include <bits/stdc++.h>
using namespace std;
long long i, j, cnt = 0;
string s;
long long ar[105];
long long dp[105][105][105];
long long dfs(int l, int r, int k) {
  int i;
  if (l > r) return 0;
  if (l == r) return ar[k];
  if (~dp[l][r][k]) return dp[l][r][k];
  dp[l][r][k] = dfs(l, r - 1, 0) + ar[k];
  for (i = l; i < r; i++) {
    if (s[i] == s[r])
      dp[l][r][k] = max(dp[l][r][k], dfs(i + 1, r - 1, 0) + dfs(l, i, k + 1));
  }
  return dp[l][r][k];
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int n;
  cin >> n >> s;
  for (i = 0; i < n; i++) cin >> ar[i];
  memset(dp, 0xff, sizeof(dp));
  cout << dfs(0, n - 1, 0) << endl;
  return ~~(0 ^ 0 ^ 0);
}
