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

Задача . E. Коллапс строк


Заданы \(n\) строк \(s_1, s_2, \dots, s_n\), состоящие из строчных латинских букв. Пусть \(|x|\) означает длину строки \(x\).

Определим операцию коллапса \(C(a, b)\) двух строк \(a\) и \(b\) следующим образом:

  • если \(a\) пуста, \(C(a, b) = b\);
  • если \(b\) пуста, \(C(a, b) = a\);
  • если последняя буква \(a\) совпадает с первой буквой \(b\), то \(C(a, b) = C(a_{1,|a|-1}, b_{2,|b|})\), где \(s_{l,r}\) — подстрока \(s\) с \(l\)-й по \(r\)-ю букву;
  • в противном случае, \(C(a, b) = a + b\), то есть, конкатенация двух строк.

Вычислите \(\sum\limits_{i=1}^n \sum\limits_{j=1}^n |C(s_i, s_j)|\).

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

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

В каждой из следующих \(n\) строк записана строка \(s_i\) (\(1 \le |s_i| \le 10^6\)), состоящая из строчных латинских букв.

Суммарная длина строк не превышает \(10^6\).

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

Выведите одно целое число — \(\sum\limits_{i=1}^n \sum\limits_{j=1}^n |C(s_i, s_j)|\).


Примеры
Входные данныеВыходные данные
1 3
aba
ab
ba
20
2 5
abab
babx
xab
xba
bab
126

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

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