식은 짝이 올바르게 맞는 괄호로만 이루어진 문자열이다. 예를 들어 "()()"와 "(()())"는 식이고, ")("와 "()("는 식이 아니다. 식은 다음과 같이 귀납적으로 정의할 수 있다.
- "
()"는 식이다.
- a가 식이면 "
(a)"도 식이다.
- a와 b가 식이면 "ab"도 식이다.
트리는 1부터 n까지 번호가 붙은 n개의 정점과 n−1개의 간선으로 이루어지며, 어느 두 정점 사이에도 경로가 정확히 하나 존재하는 구조이다. 각 정점에는 문자가 하나씩 적혀 있고, 그 문자는 여는 괄호 "(" 또는 닫는 괄호 ")"이다. 서로 다른 두 정점 a와 b에 대해 wa,b는 a에서 b로 가는 유일한 경로를 따라가면서 지나는 정점에 적힌 문자를 차례대로 이어 붙인 문자열이다. wa,b에는 정점 a의 문자(맨 앞)와 정점 b의 문자(맨 뒤)도 포함된다.
wa,b가 올바른 식이 되는 서로 다른 정점의 순서쌍 (a,b)의 개수를 구하여라. wa,b와 wb,a는 서로 뒤집힌 문자열이므로 (a,b)와 (b,a)는 따로 센다.