교토는 바둑판처럼 계획된 도시로 유명하다. 모든 거리는 남북 방향이거나 동서 방향이다. 일부 거리에는 번호가 붙어 있지만, 대부분은 고유한 이름을 가진다.
교차로는 그곳에서 만나는 두 거리의 이름을 따서 부른다. 예를 들어 Kawaramachi-Sanjo는 Kawaramachi 거리와 Sanjo 거리가 만나는 교차로이다. 그런데 문제가 하나 있다. 어느 이름을 먼저 써야 할까? 처음에는 순서가 제멋대로인 것처럼 보인다. 어떤 교차로는 Kawaramachi-Sanjo(남북 거리를 먼저)라고 부르지만, 다른 교차로는 Shijo-Kawaramachi(동서 거리를 먼저)라고 부른다. 경험이 쌓이면 사실 거리들 사이에 어떤 "순서(우선순위, 세기)"가 있음을 깨닫게 된다. 위 예에서 Shijo는 Kawaramachi보다 "강하고", Kawaramachi는 다시 Sanjo보다 "강하다". 이 순서를 이용하면 다른 교차로의 이름도 유추할 수 있다.
입력으로 알려진 교차로 이름 X-Y의 목록이 주어진다. 각 거리는 남북 방향이거나 동서 방향이며, 서로 직교하는(방향이 다른) 거리만 교차할 수 있다.
주어진 목록은 매우 불완전하므로, 먼저 다음 규칙으로 목록을 보완한다.
두 거리 A와 B는 아래 (1)~(3)이 모두 성립할 때 같은 세기(equal strength) 를 가진다.
이 정의를 이용해 세기 관계를 확장한다.
A가 B보다 강하다(stronger) 는 것은, 길이가 2 이상인 수열 $A = A_1, A_2, \ldots, A_n = B$ 가 존재하여, 모든 $i,(1 \le i \le n-1)$ 에 대해 $A_i\text{-}A_{i+1}$ 이 입력의 교차로이거나 $A_i$ 와 $A_{i+1}$ 이 같은 세기를 가지는 경우를 말한다.
이제 다른 교차로 이름 X-Y가 올바른지 물어본다. 어떤 이름이 올바르다고 유추할 수 있으면 긍정으로, 그렇지 않으면 부정으로 답한다. 구체적으로,
입력은 여러 개의 데이터 집합으로 이루어진다. 각 데이터 집합의 형식은 다음과 같다.
N
Crossing1
...
CrossingN
M
Question1
...
QuestionM
Crossing과 Question은 모두 다음 형식이다.
X-Y
여기서 X와 Y는 길이가 16 이하인 영숫자 문자열이다. 공백은 없으며, 알파벳은 대소문자를 구별한다.
$N$ 과 $M$ 은 각각 1 이상 1000 이하이고, 한 데이터 집합에 등장하는 거리는 200개를 넘지 않는다.
마지막 데이터 집합 뒤에는 0 하나만 있는 줄이 온다.
각 데이터 집합에 대해 $M+1$ 개의 줄을 출력한다. 첫 줄에는 입력의 Crossing 부분에 등장하는 서로 다른 거리의 개수를 출력하고, 이어서 각 질문에 대한 답을 공백 없이 YES 또는 NO로 한 줄씩 출력한다.