룬 숲

아직 제출이 없습니다시간 제한3초메모리 제한1024 MB

문제

흑곰과 흰곰은 룬 숲에 사는 커모드 곰 남매이다. 두 곰은 숲에 있는 나무 한 그루에서 문자열 놀이를 하려고 한다. 룬 숲의 나무는 11부터 NN까지의 정점과 N1N-1개의 양방향 간선으로 이루어진 연결 그래프이다. 나무의 ii번 정점에는 알파벳 대문자 r_ir\_i가 적혀있다. 두 곰은 다음과 같은 규칙을 통해 나무에서 각자 원하는 문자열을 하나씩 만든다.

  1. 빈 문자열 SS가 존재한다.
  2. 나무에서 정점 xx와 정점 yy를 선택한다. 두 정점은 같아도 된다.
  3. 정점 xx에서 시작해서 정점 yy에서 끝나는 단순 경로(중복된 정점이 존재하지 않는 경로)를 따라 이동하며 방문한 순서대로 정점에 적힌 문자를 SS의 오른쪽 끝에 붙인다. 정점 xx와 정점 yy에 적힌 문자도 포함한다.

이러한 규칙을 통해 나무에서 만든 문자열을 S(x,y)S\left( x,y \right)라고 부른다. 문자열 놀이를 하는 동안 나무에 적혀있는 문자가 사라지거나 변하는 일은 없다.

흑곰은 정점 aa와 정점 bb를 골라 문자열 S(a,b)S\left( a,b \right)를 만든다. 흰곰은 정점 cc와 정점 dd를 골라 문자열 S(c,d)S\left( c,d \right)를 만든다. 그리고 두 문자열을 왼쪽 끝부터 비교했을 때 몇 글자가 겹치는지 확인한다. 이것이 바로 커모드 곰의 문자열 놀이이다.

룬 숲의 나무 한 그루가 주어진다. 두 곰은 이 나무에서 문자열 놀이를 MM번 할 것이다. ii번째 놀이에서 흑곰이 고른 정점 a_i,b_ia\_i,b\_i와 흰곰이 고른 정점 c_i,d_ic\_i,d\_i가 주어진다. 이때 S(a_i,b_i)S\left( a\_i,b\_i \right)S(c_i,d_i)S\left( c\_i,d\_i \right)를 왼쪽 끝부터 비교했을 때 몇 글자가 겹치는지 답해야 한다.

입력

첫 번째 줄에 정점의 개수 NN이 주어진다. (2N2×105)(2\leq N\leq 2\times 10^5)

두 번째 줄부터 NN개의 줄에 걸쳐 i+1i+1 번째 줄에 ii번 정점에 써있는 문자 r_ir\_i가 주어진다. r_ir\_i는 알파벳 대문자이다.

N+2N+2 번째 줄부터 N1N-1개의 줄에 걸쳐 간선의 양 끝 정점 u_iu\_iv_iv\_i가 공백으로 구분되어 주어진다. (1u_i<v_iN)(1\leq u\_i\lt v\_i\leq N)

2N+12N+1 번째 줄에 정수 MM이 주어진다. (1M2×105)(1\leq M\leq 2\times 10^5)

2N+22N+2 번째 줄부터 MM개의 줄에 걸쳐 흑곰과 흰곰이 고른 정점 a_i,b_i,c_i,d_ia\_i,b\_i,c\_i,d\_i가 공백으로 구분되어 주어진다. (1a_i,b_i,c_i,d_iN)(1\leq a\_i,b\_i,c\_i,d\_i\leq N)

출력

첫 번째 줄부터 MM개의 줄에 걸쳐 S(a_i,b_i)S\left( a\_i,b\_i \right)S(c_i,d_i)S\left( c\_i,d\_i \right)를 왼쪽 끝부터 비교했을 때 겹치는 글자의 개수를 출력한다.