N = int(input()) S = list(input()) A = list(map(int, input().split())) inf = 10 ** 18 M = 2 * N dp = [[inf] * (M + 5) for i in range(M + 5)] dp[0][0] = 0 for i in range(M): for j in range(M): if S[i] == "(": dp[i + 1][j + 1] = min(dp[i + 1][j + 1], dp[i][j]) if j: dp[i + 1][j - 1] = min(dp[i + 1][j - 1], dp[i][j] + A[i]) else: if j: dp[i + 1][j - 1] = min(dp[i + 1][j - 1], dp[i][j]) dp[i + 1][j + 1] = min(dp[i + 1][j + 1], dp[i][j] + A[i]) print(dp[M][0])