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))