5520: OI联盟[202407]T5 修改括号序列

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:0

题目描述

现在给你一个括号序列。每个括号要么是左括号,要么是右括号。所有括号都被染了颜色,每个括号被染了以下3 种颜色中的一种:红色、绿色和蓝色。
你现在可以把某些位置的括号从左括号变成右括号,或者从右括号变成左括号。你不允许改变括号的排列顺序,也不允许改变括号的颜色。现在,你可以用零次或多次的修改操作,使得最终的括号序列同时满足以下两个条件:
    1.如果去掉所有的红色括号,剩下的括号构成一个合法的括号序列。
    2.如果去掉所有的绿色括号,剩下的括号构成一个合法的括号序列。
一个括号序列 S 是合法的当且仅当它满足条件之一:
    3.S 为空。
    4.存在两个合法的括号序列 X,Y ,使得 S=XY
    5.存在一个合法的括号序列 X,使得S=(X)。请注意,在这种情况下,最左的左括号和最右的右括号{ }是不同颜色的。
问是否存在一种修改方案?若存在,最少的修改次数是多少?


输入

第一行包含一个正整数 n ,表示括号序列的长度。

第二行包含一个只包含 '(' 和 ')' 的字符串 s ,表示给定的括号序列。 

第三行包含 n 个整数 ci (0 =< ci <= 2)ci 表示第 i 个括号的颜色。 0 表示红色, 1 表示绿色,2 表示蓝色。

输出

如果存在一种修改方案,输出一个整数表示最少的修改次数。否则输出 -1 。

样例输入 复制

5
))))(
0 1 2 2 2

样例输出 复制

4

提示

样例2:

3 ()( 0 2 1
-1

样例3:

6 (()()) 0 0 0 0 0 0
0

数据范围:



来源/分类