INF = 1 << 60 N = int(input()) S = input() A = list(map(int, input().split())) sz = 2 * N + 1 dp = [INF] * sz dp[0] = 0 for i, (c, a) in enumerate(zip(S, A)): pp = [INF] * sz dp, pp = pp, dp for j in range(2 * N): if pp[j] == INF: continue if c == '(': dp[j+1] = min(dp[j+1], pp[j]) if j > 0: dp[j-1] = min(dp[j-1], pp[j] + a) elif c == ')': if j > 0: dp[j-1] = min(dp[j-1], pp[j]) dp[j+1] = min(dp[j+1], pp[j] + a) ans = dp[0] print(ans)