{
    \parindent=1cm
    \begin{tabular}{l@{\extracolsep{1cm}}l}
         Идея: & Захар Яковлев, Геннадий Короткевич \\
         Разработка: & Никита Голиков \\
     \end{tabular}
}


Рассмотрим две задачи, выбранные в годы $i$ и $i + 1$. Если их названия похожи, то при выборе названия в год $i+1$ правило было выполнено.

В противном случае необходимо проверить, что на суффиксе, начинающемся с $i+1$, нет задач, похожих на $i$-ю. Для этого пройдем по задачам в обратном порядке, начиная с $n$-й. Во время итерации мы будем хранить два множества слов: одно множество будет хранить все использованные первые слова в суффиксе, а другое~--- все использованные вторые слова.

При проверке задачи $i+1$, если названия $i$-й и $(i+1)$-й не были похожи, мы проверим, содержит ли какое-либо из множеств соответствующее слово из $i$-го названия. Если какое-либо из множеств содержит это слово, это означает, что правило не было соблюдено в год $i+1$.

Если все проверки прошли успешно, это означает, что судьи правильно следовали правилу. Время работы решения $O(n)$ или $O(n \log n)$, в зависимости от реализации используемой структуры данных множества.