괄호의 값

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

문제

괄호열은 네 문자 (, ), [, ]만으로 이루어진 문자열이다. 올바른 괄호열은 다음과 같이 정의한다.

  1. 한 쌍의 괄호만으로 이루어진 ()[]는 올바른 괄호열이다.
  2. X가 올바른 괄호열이면 (X)[X]도 올바른 괄호열이다.
  3. XY가 모두 올바른 괄호열이면, 두 문자열을 이어 붙인 XY도 올바른 괄호열이다.

올바른 괄호열 X의 값은 다음 규칙으로 정한다.

  1. ()의 값은 2이다.
  2. []의 값은 3이다.
  3. (X)의 값은 2 × value(X)이다.
  4. [X]의 값은 3 × value(X)이다.
  5. 올바른 괄호열 XY를 이어 붙인 XY의 값은 value(XY) = value(X) + value(Y)이다.

예를 들어 (()[[]])의 안쪽 ()[[]]의 값은 2 + 3 × 3 = 11이므로 (()[[]])의 값은 2 × 11 = 22이다. 또 ([])의 값은 2 × 3 = 6이므로 (()[[]])([]) 전체의 값은 22 + 6 = 28이다.

주어진 괄호열을 읽고 위 규칙에 따라 값을 계산해 출력하라. 올바른 괄호열이 아니면 0을 출력해야 한다.

입력

첫째 줄에 괄호열을 나타내는 문자열이 주어진다. 문자열의 길이는 1 이상 30 이하이다.

출력

괄호열의 값을 나타내는 정수 하나를 출력한다. 입력이 올바른 괄호열이 아니면 0을 출력한다.