Витя живет в Берляндии и очень хочет поступить в университет. Для этого ему нужно сдать Единый Берляндский Экзамен, а для этого нужно получить зачёт за так называемое «тотальное сочинение». Витя не силен в берляндском языке, а в сочинениях вообще профан, поэтому он обратился за помощью к Вале. Валя разузнал, по каким критериям будет осуществлена проверка тотального сочинения, и поделился ими с Витей.
Сочинением является последовательность слов (непустых последовательностей из строчных латинских букв), записанная через пробел. Например, «aba caba
» или «kek
» — сочинения, а «Oh yeah!
» или «wrong answer
» — нет.
Для получения зачета нужно, во-первых, обязательно написать n ключевых слов: s1, s2, …, sn. Во-вторых, нужно соблюдать k правил вида (ai, bi) — если в сочинении встречается слово ai, то после него в сочинении должно обязательно встретиться слово bi, не обязательно сразу за ai. Если все эти правила соблюсти, то за сочинение гарантирован зачет.
Вите сложно это запомнить, поэтому Валя предложил ему обратиться к Вам за помощью. Помогите составить кратчайшее сочинение, которое гарантированно будет зачтено. Если среди кратчайших по длине возможно несколько вариантов, выберите лексикографически меньший (см. примечание). Учтите: возможно, что не существует ни одного сочинения, которое гарантированно будет зачтено.
Исходные данные
В первой строке вводятся целые числа n и k — количество ключевых слов и правил, соответственно (1 ≤ n, k ≤ 100 000).
В следующих n строках вводятся по одному в строке ключевые слова s1, s2, …, sn. Гарантируется, что все ключевые слова различны.
В последних k строках вводятся по одному в строке правила: в i-й строке записано через пробел два слова ai bi, обозначающие правило вида (ai, bi). Гарантируется, что никакие два правила не совпадают, то есть для любых i ≠ j верно или ai ≠ aj, или bi ≠ bj.
Гарантируется, что суммарная введённая длина всех слов не превышает 2 000 000.
Результат
В единственной строке выведите ответ на задачу: самое короткое (а среди всех самых коротких — лексикографически минимальное) сочинение, если такое существует, или −1, если не существует.
Вывод проверяется строго: между словами следует ставить единственный пробел, а вывод сочинения следует завершить единственным символом — переводом строки.
Примеры
исходные данные | результат |
---|
2 3
atan
tan
atan ate
atan tabular
zzz atan
| atan ate tabular tan
|
1 3
a
a b
b c
c a
| -1
|
Замечания
Сочинение p = p1p2… pa (p1, p2, …, pa — символы: буквы или пробелы) лексикографически меньше сочинения q = q1q2… qb (q1, q2, …, qb — тоже символы), если выполнено одно из двух:
- a < b и p1 = q1, p2 = q2, …, pa = qa.
- Существует такое i, что для всех j < i выполняется pj = qj, но символ pi стоит в алфавите раньше, чем символ qi. Считается, что пробел стоит в алфавите раньше всех букв латинского алфавита.
Например p = aba
лексикографически меньше сочинения q = ac
, потому что p1 = q1 = a
, но p2 = b
стоит в алфавите раньше, чем q2 = c
.
Автор задачи: Валентин Зуев
Источник задачи: Уральская командная олимпиада по программированию 2021