Олимпиадный тренинг

Задача . D. Непересекающееся разделение


Обозначим за \(f(x)\) функцию от строки \(x\), равную числу различных символов, содержащихся в строке. Например, \(f(\texttt{abc}) = 3\), \(f(\texttt{bbbbb}) = 1\), а \(f(\texttt{babacaba}) = 3\).

Дана строка \(s\), разделите её на две непустых строки \(a\) и \(b\) таких, что \(f(a) + f(b)\) максимально возможно. Другими словами, найдите наибольшее возможное значение \(f(a) + f(b)\) такое, что \(a + b = s\) (конкатенация строк \(a\) и \(b\) равна строке \(s\)).

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

Тест состоит из нескольких наборов входных данных. Первая строка содержит целое число \(t\) (\(1 \leq t \leq 10^4\)) — количество наборов входных данных. Затем следуют описания наборов.

Первая строка каждого набора содержит целое число \(n\) (\(2 \leq n \leq 2\cdot10^5\)) — длину строки \(s\).

Вторая строка содержит строку \(s\), состоящую из строчных латинских букв.

Гарантируется, что сумма \(n\) по всем наборам входных данных не превосходит \(2\cdot10^5\).

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

Для каждого набора входных данных выведите единственное целое число  — максимально возможное значение \(f(a) + f(b)\) такое, что \(a + b = s\).

Примечание

В первом наборе входных данных существует только один корректный способ разделить \(\texttt{aa}\) на две непустых строки: \(\texttt{a}\) и \(\texttt{a}\). \(f(\texttt{a}) + f(\texttt{a}) = 1 + 1 = 2\).

Во втором наборе, разделив \(\texttt{abcabcd}\) на \(\texttt{abc}\) и \(\texttt{abcd}\) мы можем получить наибольший возможный ответ \(f(\texttt{abc}) + f(\texttt{abcd}) = 3 + 4 = 7\)

В третьем наборе не важно как мы разделим строку, ответ будет равен \(2\) при любом разделении.


Примеры
Входные данныеВыходные данные
1 5
2
aa
7
abcabcd
5
aaaaa
10
paiumoment
4
aazz
2
7
2
10
3

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя