10860. Алхімія (CD)
Алхіміки Середньовіччя володіли знаннями про перетворення різних хімічних речовин одна на одну. Це підтверджують і останні дослідження археологів. У ході археологічних розкопок було виявлено \(m\) глиняних табличок, кожна з яких була покрита незрозумілими на перший погляд символами. У результаті розшифровки з'ясувалося, що кожна з табличок описує одну алхімічну реакцію, яку вміли проводити алхіміки. Результатом алхімічної реакції є перетворення однієї речовини на іншу.
Задано набір алхімічних реакцій, описаних на знайдених глиняних табличках, вихідну речовину та необхідну речовину. Необхідно з'ясувати, чи можливо перетворити вихідну речовину на необхідну за допомогою цього набору реакцій, а у разі позитивної відповіді на це питання — знайти мінімальну кількість реакцій, необхідну для здійснення такого перетворення.
Формат вхідних даних
Перший рядок містить ціле число \(𝑚\) (\(0≤𝑚≤1000\) ) — кількість записів у книзі.
Кожен із наступних рядків описує одну алхімічну реакцію і має формат речовина1->речовина2, де речовина1 — назва вихідної речовини, речовина2 — назва продукту алхімічної реакції. \(m+2\)-й рядок містить назву речовини, яка є вихідною, \(m+3\)-й - назву речовини, яку потрібно отримати. У вхідному потоці згадується трохи більше 100 різних речовин. Назва кожної речовини складається з малих і великих латинських літер і має довжину трохи більше 20 символів. Рядкові та великі літери різняться.
Формат вихідних даних
У вихідний потік виведіть мінімальну кількість алхімічних реакцій, які потрібні для отримання необхідної речовини з вихідної, або -1, якщо потрібну речовину неможливо отримати.
Приклад вхідних даних
5
Aqua -> AquaVita
AquaVita -> PhilosopherStone
AquaVita -> Argentum
Argentum -> Aurum
AquaVita -> Aurum
Aqua
Aurum
Приклад вихідних даних
2
Приклад вхідних даних
5
Aqua -> AquaVita
AquaVita -> PhilosopherStone
AquaVita -> Argentum
Argentum -> Aurum
AquaVita -> Aurum
Aqua
Osmium
Приклад вихідних даних
-1
Коментарі