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

Задача . G. Подпоследовательности повсюду


Для последовательности строк \([t_1, t_2, \dots, t_m]\) введем функцию \(f([t_1, t_2, \dots, t_m])\), которая равна кол-ву различных строк (включая пустую строку), которые являются подпоследовательностями хотя бы одной строки \(t_i\). \(f([]) = 0\) (то есть значение такой функции для пустой последовательности строк равно \(0\)).

Вам задана последовательность строк \([s_1, s_2, \dots, s_n]\). Каждая строка в этой последовательности состоит из строчных латинских букв и является отсортированной (то есть каждая строка начинается с нескольких (возможно, ни одного) символов a, затем идут несколько (возможно, ноль) символов b, ..., в конце идут несколько (возможно, ноль) символов z).

Для каждой из \(2^n\) подпоследовательностей \([s_1, s_2, \dots, s_n]\), посчитайте значение функции \(f\) по модулю \(998244353\).

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

В первой строке задано одно целое число \(n\) (\(1 \le n \le 23\)) — количество строк.

Затем следуют \(n\) строк. \(i\)-я из них содержит строку \(s_i\) (\(1 \le |s_i| \le 2 \cdot 10^4\)), состоящую из строчных латинских букв. Каждая строка \(s_i\) является отсортированной.

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

Так как выводить \(2^{23}\) чисел довольно долго, представьте ответ следующим образом:

Для каждой из \(2^n\) подпоследовательностей (мы обозначим подпоследовательность как \([s_{i_1}, s_{i_2}, \dots, s_{i_k}]\)) посчитайте \(f([s_{i_1}, s_{i_2}, \dots, s_{i_k}])\), возьмите это значение по модулю \(998244353\), а затем умножьте на \(k \cdot (i_1 + i_2 + \dots + i_k)\). Выведите XOR всех \(2^n\) чисел, которые у вас получатся.

Индексы \(i_1, i_2, \dots, i_k\) в описании подпоследовательности заданы в \(1\)-индексации (то есть они от \(1\) до \(n\)).


Примеры
Входные данныеВыходные данные
1 3
a
b
c
92
2 2
aa
a
21
3 2
a
a
10
4 2
abcd
aabb
124
5 3
ddd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaabbbbbbbbbbbcccccccccccciiiiiiiiiiiiiiiiiiiiiiooooooooooqqqqqqqqqqqqqqqqqqvvvvvzzzzzzzzzzzz
15706243380

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

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