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

В каждой масти, если мы скидываем $t$ карт, $0 \le t \le k$, мы можем посчитать, сколько карт нам нужно будет добрать, чтобы эта масть стала требуемого вида (естественно, что мы скидываем самые большие карты, а добираем --- самые маленькие).

Применим метод динамического программирования: обозначим за $f(i, j)$ минимальное число карт, которое нужно будет добрать, если среди первых $i$ мастей мы скинем $j$ карт в сумме.

Для того, чтобы пересчитывать функцию, в очередной масти перебираем параметр $t$ --- количество скидываемых карт. Естественным образом рассматриваем только те масти, которые присутствуют у нас на руках, остальные пропускаются и не участвуют в решении (можно рассматривать это, как сжатие координат).

Состояний $O(n^2)$, и суммарное число переходов тоже оценивается как $O(n^2)$~--- а точнее, число переходов равно $n$, умноженному на сумму количеств вариантов $t$ (которое, в свою очередь, равно $k+1$ для масти размера $k$).

Ответом на задачу является минимальное такое $j$, для которого $f(m, j) \le j$ (где $m$ --- максимальная масть).