M. Разбиение на хорошие строки
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В задачах на строки часто требуется найти строку, обладающую какими-то особыми свойствами. Авторам задачи снова было лень придумывать название для такой строки, поэтому они назвали ее хорошей.

Строка называется хорошей, если она содержит ровно k различных символов. В виде конкатенации какого наименьшего количества хороших строк можно представить данную строку s?

Входные данные

В первой строке содержится целое число k (1 ≤ k ≤ 26).

Во второй строке содержится строка s (1 ≤ |s| ≤ 200000), состоящая из строчных латинских символов.

Выходные данные

Выведите через пробел наименьшее количество хороших строк, на которые можно разбить каждый префикс строки s, начиная с префикса, состоящего из первого символа строки, и заканчивая префиксом, совпадающим со строкой. Ведь так тщательнее протестируется, правда?

Если для какого-либо префикса разбиение невозможно, выведите для него «-1».

Примеры
Входные данные
2
abacaba
Выходные данные
-1 1 1 2 2 3 3