编程题
### 问题描述
幼儿园小班的浩楠同学今天刚学习了合法括号序列的概念。
他有一个括号序列 $s$ ,将第 $i$ 个位置取反(即 `'('` 变为 `')'` ,`'('` 变为 `')'` )的代价为 $a_i$,他想把括号序列变成合法的,至少需要多少代价?
合法的括号序列定义如下:
- $()$ 是合法的括号序列。
- 如果 $A$ 是合法的括号序列,那么 $(A)$ 是合法的括号序列。
- 如果 $A,B$ 是合法的括号序列,那么 $AB$ 是合法的括号序列。
### 输入格式
共 $3$ 行,第一行一个偶数 $n$,表示括号序列的长度。
第二行一个字符串 $s$,表示原括号序列。
第三行 $n$ 个整数 $a_i$,表示取反第 $i$ 个位置的代价。
### 输出格式
共一行,一个整数 $ans$ ,表示最小的代价。
### 样例输入
```text
4
((()
1 2 3 1
```
### 样例输出
```text
2
```
### 说明
将第 $2$ 个位置取反,代价为 $2$,最终括号序列为 $()()$。
### 评测数据规模
对于 $100$% 的评测数据,$1\leq n \leq 2 \times 10^3,1 \leq a_i \leq 10^5$。