ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

2159. Сочинение

Ограничение времени: 2.0 секунды
Ограничение памяти: 256 МБ
Витя живет в Берляндии и очень хочет поступить в университет. Для этого ему нужно сдать Единый Берляндский Экзамен, а для этого нужно получить зачёт за так называемое «тотальное сочинение». Витя не силен в берляндском языке, а в сочинениях вообще профан, поэтому он обратился за помощью к Вале. Валя разузнал, по каким критериям будет осуществлена проверка тотального сочинения, и поделился ими с Витей.
Сочинением является последовательность слов (непустых последовательностей из строчных латинских букв), записанная через пробел. Например, «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). Гарантируется, что никакие два правила не совпадают, то есть для любых ij верно или aiaj, или bibj.
Гарантируется, что суммарная введённая длина всех слов не превышает 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 = p1p2pa (p1, p2, …, pa — символы: буквы или пробелы) лексикографически меньше сочинения q = q1q2qb (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