#include <bits/stdc++.h>
using namespace std;
const long long mx = 166;
const long long mod = 1e9 + 7;
const long long inf = 8e18 + 66;
const int llg = 18;
const long long mxk = 31700000;
long long power(long long a, long long b, long long md) {
  if (b == 0) return 1;
  long long c = power(a, b / 2, md);
  if (b % 2)
    return c * c % md * a % md;
  else
    return c * c % md;
}
long long n, a[mx], dp[mx][mx][mx];
string s;
long long recurse_shit(int st, int e, int p) {
  if (e - st <= 0) return 0;
  if (e - st == 1) return a[p];
  long long &ans = dp[st][e][p];
  if (ans != 0) return ans;
  ans = a[p] + recurse_shit(st + 1, e, 1);
  for (int i = st + 1; i < e; i++) {
    if (s[i] == s[st])
      ans = max(ans, recurse_shit(st + 1, i, 1) + recurse_shit(i, e, p + 1));
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> s;
  for (int i = 1; i < n + 1; i++) {
    cin >> a[i];
  }
  cout << recurse_shit(0, n, 1);
}
