만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

균형 잡힌 무지개 괄호 수열

시간 제한2초메모리 제한512 MB

요약
괄호 수열에서 일부 괄호를 뒤집어, 연두색 괄호를 모두 지웠을 때와 회색 괄호를 모두 지웠을 때 각각 균형 잡힌 수열이 되도록 최소 횟수를 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 문자열, 누적 합
정답자
아직 제출이 없습니다

문제

르윈과 간은 괄호 수열을 하나 가지고 있다. 아니, 이 단어는 너무 어색하다. 다시 한 번 말한다:

괄호 수열이 주어진다. 각 괄호는 라임, 회색, 파랑 중 하나의 색을 가지며, 여는 괄호이거나 닫는 괄호이다.

일부 괄호를 여는 괄호에서 닫는 괄호로, 또는 그 반대로 바꿀 수 있다. 괄호의 순서와 색은 바꿀 수 없다. 다음 두 조건을 만족하도록 0번 이상 바꾸려고 한다.

  1. 라임 괄호를 모두 제거했을 때 남은 괄호가 균형 잡힌 괄호 수열이 된다.
  2. 회색 괄호를 모두 제거했을 때 남은 괄호가 균형 잡힌 괄호 수열이 된다.

괄호 수열 SS는 다음 조건 중 하나를 만족하면 균형 잡힌 괄호 수열이다.

  1. SS는 비어 있다.
  2. S=XYS = XY이고, XX와 YY는 모두 비어 있지 않은 균형 잡힌 괄호 수열이다.
  3. S=(X)S = (X)이고, XX는 균형 잡힌 괄호 수열이다. 맨 앞의 여는 괄호와 맨 뒤의 닫는 괄호는 색이 다를 수 있다.

이것이 가능한가? 가능하다면 필요한 변경 횟수의 최솟값은 얼마인가?

입력

첫째 줄에 괄호 수열의 길이 nn (1≤n≤60001 \leq n \leq 6000)이 주어진다.

둘째 줄에 길이가 nn인 문자열 ss가 주어진다. ss는 "("와 ")"로만 이루어진 괄호 수열이다.

셋째 줄에 정수 nn개 cic_i (0≤ci≤20 \leq c_i \leq 2)가 주어진다. cic_i는 ii번째 괄호의 색이다. 0은 라임, 1은 회색, 2는 파랑에 대응한다.

출력

조건을 만족하도록 만들 수 있으면 필요한 변경 횟수의 최솟값을 출력한다. 만들 수 없으면 -1을 출력한다.

힌트

첫 번째 예제에서 가능한 결과 수열은 (()()이다.

예제3

  1. 예제 1

    입력
    5
    ))))(
    0 1 2 2 2
    
    예상 출력
    4
    
  2. 예제 2

    입력
    3
    ()(
    0 2 1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    6
    (()())
    0 0 0 0 0 0
    
    예상 출력
    0