dictionary и строка phrase. Кусок — это любая непустая строка, которая является началом (префиксом) хотя бы одного слова из словаря; целое слово тоже подходит.
Склейте phrase из кусков, взяв их как можно меньше (один и тот же кусок можно брать сколько угодно раз). Верните минимальное число кусков или -1, если собрать phrase невозможно.
Строки здесь длинные, поэтому перебор всех кусков в каждой позиции не уложится во время.dictionary=['sunrise', 'setting', 'tide'], phrase='sunset' → 2
«sun» — начало слова «sunrise», «set» — начало слова «setting». Двух кусков достаточно, а одним «sunset» не собрать.
dictionary=['abab', 'b'], phrase='ababbaba' → 3
Например, «abab» + «b» + «aba»: последний кусок — начало слова «abab». Меньше чем за три куска не выйдет.
dictionary=['moon'], phrase='noon' → -1
Ни одно слово не начинается с буквы «n».
len(dictionary) ≤ 100len(dictionary[i]) ≤ 5·10⁴len(phrase) ≤ 5·10⁴dictionary=['sunrise', 'setting', 'tide'], phrase='sunset'
2
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 172 теста на сервере, включая скрытые.