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

Задача . B. Удаление подстроки


Задана строка \(s\) длины \(n\), состоящая только из строчных букв латинского алфавита.

Подстрока строки — это последовательная подпоследовательность этой строки. Таким образом, строка «forces» является подстрокой «codeforces», а строка «coder» — нет.

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

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

Заметьте, что вы можете удалить всю строку и это является корректным способом. Также заметьте, что вам необходимо удалить хотя бы один символ.

Так как ответ может быть довольно большим (хотя не очень большим), выведите его по модулю \(998244353\).

Если вы программируете на Python, рассмотрите возможность отправки решения на PyPy, а не на Python, когда будете отправлять свой код.

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

Первая строка входных данных содержит одно целое число \(n\) (\(2 \le n \le 2 \cdot 10^5\)) — длину строки \(s\).

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

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

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

Выведите одно целое число — количество способов по модулю \(998244353\) удалить ровно одну подстроку из \(s\) таким образом, чтобы все оставшиеся символы были равны.

Примечание

Пусть \(s[l; r]\) — подстрока строки \(s\) с позиции \(l\) по позицию \(r\) включительно.

Тогда в первом тестовом примере вы можете удалить следующие подстроки:

  • \(s[1; 2]\);
  • \(s[1; 3]\);
  • \(s[1; 4]\);
  • \(s[2; 2]\);
  • \(s[2; 3]\);
  • \(s[2; 4]\).

Во втором тестовом примере вы можете удалить следующие подстроки:

  • \(s[1; 4]\);
  • \(s[1; 5]\);
  • \(s[1; 6]\);
  • \(s[1; 7]\);
  • \(s[2; 7]\);
  • \(s[3; 7]\).

В третьем тестовом примере вы можете удалить следующие подстроки:

  • \(s[1; 1]\);
  • \(s[1; 2]\);
  • \(s[2; 2]\).

Примеры
Входные данныеВыходные данные
1 4
abaa
6
2 7
aacdeee
6
3 2
az
3

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

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