def solve(n, a_str, t_list):
a = list(map(int, a_str)) # 0/1/2
t = t_list
# 预处理:计算前缀和 s[0], s[1], s[2]
s = [[0] * (n + 1) for _ in range(3)]
for i in range(n):
for j in range(3):
s[j][i + 1] = s[j][i]
s[a[i]][i + 1] += t[i]
ans = float('inf')
# 手动枚举所有排列
orders = [
[0, 1, 2],
[0, 2, 1],
[1, 0, 2],
[1, 2, 0],
[2, 0, 1],
[2, 1, 0],
]
for x in orders:
first_sum = s[x[0]][n] + s[x[1]][n]
mn = [0] * (n + 1)
cur_min = 0
for i in range(1, n + 1):
diff = s[x[1]][i] - s[x[0]][i]
cur_min = min(cur_min, diff)
mn[i] = cur_min
for j in range(n + 1):
res = first_sum + s[x[2]][j] - s[x[1]][j] + mn[j]
if res < ans:
ans = res
return ans
# 示例使用
if __name__ == "__main__":
import sys
input = sys.stdin.readline
n = int(input())
a_str = input().strip()
t_list = list(map(int, input().split()))
print(solve(n, a_str, t_list))