#include <bits/stdc++.h>
using namespace std;
vector<int> a;
vector<long long int> profit;
int n;
string str;
long long int dp[111][111][111];
long long int cal(int st, int en, int s) {
  if (st >= en) return 0;
  long long int &ret = dp[st][en][s];
  if (ret != -1) return ret;
  ret = cal(st + 1, en, 1) + profit[s];
  for (int i = st + 1; i < en; i++) {
    if (str[i] == str[st])
      ret = max(ret, cal(st + 1, i, 1) + cal(i, en, s + 1));
  }
  return ret;
}
int main() {
  scanf("%d", &n);
  cin >> str;
  profit.resize(n + 1);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &profit[i]);
  }
  memset(dp, -1, sizeof dp);
  cout << cal(0, n, 1) << '\n';
}
