N = int(input()) S = list(input()) A = list(map(int, input().split())) Left_cost = [0]*2*N Right_cost = [0]*2*N for i,(s,a) in enumerate(zip(S,A)): if s=='(': Right_cost[i]=a else: Left_cost[i]=a inf = 10**18 DP = [inf]*2*N DP[0]=0 for lc,rc in zip(Left_cost,Right_cost): NDP = [inf]*2*N for i in range(2*N): if i>0: NDP[i]=min(NDP[i],DP[i-1]+lc) if i<2*N-1: NDP[i]=min(NDP[i],DP[i+1]+rc) DP = NDP print(DP[0])