시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 (추가 시간 없음) 2048 MB80413547.297%

문제

You are given a tree where each node is annotated with a character from ()[]{}. A path is a sequence of one or more nodes where no node is repeated and every pair of adjacent nodes is connected with an edge. A path is balanced if the characters at each node, when concatenated, form a balanced string. A string is balanced if it satisfies the following definition:

  • An empty string is balanced.
  • If $s$ is a balanced string, then ($s$), [$s$], and {$s$} are balanced strings.
  • if $a$ and $b$ are balanced strings, then $ab$ ($a$ concatenated with $b$) is a balanced string.

Compute the number of balanced paths over the entire tree.

입력

The first line of input contains a single integer $n$ ($2 \le n \le 5 \cdot 10^3$).

The next line contains a string of $n$ characters, where each character is one of ()[]\{\}.

Each of the next $n-1$ lines contains two integers, $u$ and $v$ ($1 \le u < v \le n$), indicating that nodes $u$ and $v$ are connected with an edge. It is guaranteed the graph is a tree.

출력

Output a single integer, which is the number of balanced paths over the entire tree.

예제 입력 1

4
()()
1 2
2 3
3 4

예제 출력 1

4

예제 입력 2

4
[[]]
1 2
2 3
3 4

예제 출력 2

2

예제 입력 3

6
([]{})
1 2
2 3
3 4
4 5
5 6

예제 출력 3

4