← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	var n int
	fmt.Fscan(reader, &n)
	var s string
	fmt.Fscan(reader, &s)
	a := make([]int64, n+1)
	for i := 1; i <= n; i++ {
		fmt.Fscan(reader, &a[i])
	}

	for i := 1; i <= n; i++ {
		for j := 1; j < i; j++ {
			if a[j]+a[i-j] > a[i] {
				a[i] = a[j] + a[i-j]
			}
		}
	}

	dp := make([][][]int64, n)
	for i := 0; i < n; i++ {
		dp[i] = make([][]int64, n)
		for j := 0; j < n; j++ {
			dp[i][j] = make([]int64, n)
			for k := 0; k < n; k++ {
				dp[i][j][k] = -1
			}
		}
	}

	var solve func(l, r, c int) int64
	solve = func(l, r, c int) int64 {
		if l > r {
			return 0
		}
		if dp[l][r][c] != -1 {
			return dp[l][r][c]
		}
		res := solve(l, r-1, 0) + a[c+1]
		for i := l; i < r; i++ {
			if s[i] == s[r] {
				val := solve(i+1, r-1, 0) + solve(l, i, c+1)
				if val > res {
					res = val
				}
			}
		}
		dp[l][r][c] = res
		return res
	}

	fmt.Println(solve(0, n-1, 0))
}