올바른 괄호 문자열(regular brackets sequence)을 다음과 같이 정의한다.
예를 들어 다음 문자열은 모두 올바른 괄호 문자열이다.
(), [], (()), ([]), ()[], ()[()]
반면 다음 문자열은 모두 올바른 괄호 문자열이 아니다.
(, [, ), )(, ([)], ([(]
(, ), [, ] 네 종류의 문자로 이루어진 문자열이 주어진다. 이 문자열을 부분 수열로 포함하는 가장 짧은 올바른 괄호 문자열을 찾고, 그 길이를 구하여라.
여기서 문자열 a1a2…an이 문자열 b1b2…bm의 부분 수열이라는 것은, 1≤i1<i2<⋯<in≤m을 만족하는 인덱스가 존재하여 모든 1≤j≤n에 대해 aj=bij가 성립함을 뜻한다.
첫째 줄에 (, ), [, ]로만 이루어진 문자열이 주어진다. 문자열의 길이는 최대 100이며 다른 문자는 포함되지 않는다. 빈 문자열(빈 줄)이 주어질 수도 있으며, 이는 빈 수열을 의미한다.
주어진 문자열을 부분 수열로 포함하는 올바른 괄호 문자열 중 가장 짧은 것의 길이를 정수 하나로 출력한다.