올바른 괄호 구간

시간 제한1초메모리 제한128 MB

문제

문자열은 네 종류의 괄호 문자 ()[]만으로 이루어진다.

괄호열이 다음 규칙으로 만들 수 있으면 올바른 괄호열이라고 한다.

  1. ()[]는 올바른 괄호열이다.
  2. A가 올바른 괄호열이면 (A)[A]도 올바른 괄호열이다.
  3. AB가 올바른 괄호열이면 AB도 올바른 괄호열이다.

초기 괄호열이 주어진다. 이후 각 단계마다 괄호 하나가 현재 문자열의 맨 앞 또는 맨 뒤에 삽입된다.

각 단계가 끝날 때, 그 단계에서 새로 삽입한 괄호를 포함하는 연속 부분 문자열 중 올바른 괄호열인 것의 최소 길이를 구하라.

입력

첫째 줄에 초기 괄호열이 주어진다. 길이는 100,000 이하이다.

둘째 줄에 단계 수 N이 주어진다. (1 ≤ N ≤ 100,000)

다음 N개의 줄에는 정수 A와 문자 C가 공백 하나로 구분되어 주어진다. A0이면 C를 현재 문자열의 맨 앞에 삽입하고, A1이면 C를 맨 뒤에 삽입한다. C(, ), [, ] 중 하나이다.

출력

각 단계마다 한 줄에 답을 출력한다. 새로 삽입한 괄호를 포함하는 올바른 연속 부분 문자열이 없으면 0을 출력한다.