만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

투명성 감사

면접 대비

시간 제한6초메모리 제한1024 MB

요약
대문자와 소문자 간선으로 이루어진 공장 상태 그래프가 주어집니다. 대문자만 남기면 같아지는 서로 다른 두 생산물의 길이 합 최솟값을 구하고, 없으면 -1을 출력합니다.
난이도

보통10점 중 6점

유형
그래프, 최단 경로, 문자열
정답자
아직 제출이 없습니다

문제

감사해야 할 공장은 여러 제품을 만든다. 각 제품에는 고유한 과세 규칙이 있다. 제품끼리 구별하기 어려워 어떤 규칙이 적용되는지 바로 알기 힘들다. 당신의 일은 이 공장이 생산 과정을 완전히 투명하게 운영하는지 조사하는 것이다. 구체적으로, 소문자를 무시했을 때 같아 보이는 서로 다른 두 제품을 공장이 만들 수 있는지 판단한다.

최종 제품은 대문자 영문자('A'부터 'Z')와 소문자 영문자('a'부터 'z')로 이루어진 문자열이다. 두 최종 제품은 소문자를 모두 제거한 뒤 같으면 구별되지 않는다. 예를 들어 WabXYcz와 gWXfbY는 소문자를 제거하면 둘 다 WXY가 남으므로 구별되지 않는다.

공장은 스테이션 집합 SS, 라벨이 붙은 방향 전이 간선 집합 TT, 초기 스테이션 s0s_0, 포장 스테이션 집합 PP로 모델링한다. 초기 스테이션은 s0∈Ss_0 \in S이고, 포장 스테이션 집합은 P⊆SP \subseteq S이다. 전이 간선은 3-튜플 (s1,σ,s2)(s_1, \sigma, s_2)로 정의되며, 여기서 s1,s2∈Ss_1, s_2 \in S이고 σ\sigma는 대문자 또는 소문자 영문자이다. 이 간선은 생산이 스테이션 s1s_1에 있을 때 σ\sigma를 붙이면 스테이션 s2s_2에 머문다는 뜻이다. 즉 s1s_1에서 s2s_2로 가는 라벨 σ\sigma의 간선이 있다.

s0s_0에서 시작해 간선을 따라가고, 간선의 라벨을 순서대로 이어 붙인 결과가 제품이 되며, 마지막 스테이션이 PP에 속하면 그 제품을 생산할 수 있다. s0∈Ps_0 \in P이면 간선을 하나도 따르지 않는 빈 경로도 허용된다. 예를 들어 첫 번째 예제 공장은 AF, FAFB, AbFFAd, AdydAd를 생산할 수 있다. 이 목록이 전부는 아니다. 각 전이 간선은 제품을 만들 때 무제한으로 사용할 수 있다.

각 스테이션과 영문자의 조합마다 그 문자를 라벨로 가진 나가는 간선은 최대 하나이다. 즉 (s1,σ,s2),(s1,σ,s3)∈T(s_1, \sigma, s_2), (s_1, \sigma, s_3) \in T이면 s2=s3s_2 = s_3이다. 간선이 같은 스테이션으로 되돌아가는 것도 가능하며, (s1,σ,s1)∈T(s_1, \sigma, s_1) \in T도 허용된다.

주어진 공장 설계에서 서로 다르면서도 구별되지 않는 두 제품을 생산할 수 있는지 판단하라. 그런 쌍이 있으면 두 문자열 길이의 합이 최소인 쌍의 그 합을 구하라. 쌍이 없으면 -1을 출력하라.

입력

첫 줄에 세 정수 ss (1≤s≤501 \le s \le 50), pp (1≤p≤s1 \le p \le s), tt (1≤t≤52⋅s1 \le t \le 52 \cdot s)가 주어진다. 각각 스테이션의 수, 포장 스테이션의 수, 전이의 수이다. 스테이션은 1부터 ss까지 번호가 붙어 있다.

다음 pp개의 줄에는 포장 스테이션을 나타내는 정수 ii (1≤i≤s1 \le i \le s)가 하나씩 주어진다. 모든 값은 서로 다르다.

다음 tt개의 줄은 s1σs2s_1 \sigma s_2 형식이다. 이는 스테이션 s1s_1에서 스테이션 s2s_2로 가고, 간선의 라벨이 문자 σ\sigma임을 뜻한다. σ\sigma는 대문자 또는 소문자 영문자이다. 초기 스테이션은 항상 1번이다. 같은 스테이션에서 같은 문자로 나가는 전이는 두 개 이상 없다.

출력

정수 하나를 출력한다. 구별되지 않는 서로 다른 두 제품의 쌍이 없으면 -1을 출력한다. 있으면 그런 쌍을 이루는 문자열 aa, bb에 대해 ∣a∣+∣b∣|a|+|b|의 최솟값을 출력한다.

힌트

첫 번째 예제 입력의 공장 설계이다. 포장 스테이션은 이중 원으로 표시한다.

예제3

  1. 예제 1

    입력
    4 1 8
    3
    1 F 1
    1 A 2
    2 b 1
    2 F 3
    2 d 3
    3 B 3
    3 y 4
    4 d 1
    
    예상 출력
    10
    
  2. 예제 2

    입력
    4 1 8
    3
    1 F 1
    1 A 2
    2 b 1
    2 F 3
    2 d 3
    3 B 3
    3 y 4
    4 d 4
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    5 2 5
    1
    5
    1 i 2
    2 c 3
    3 p 4
    4 c 1
    1 I 5
    
    예상 출력
    4