字符串排序
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
有 个字符串,全部由小写字母组成。字符串两两不同。
现在要对它们进行排序。
排序后,每个字符串有一个代价。
对于排在第 个位置的字符串 ,它的代价计算方法是:
- 如果在 的前后均不存在字符串是 的后缀,那么 的代价为 ;
- 如果在 的后面存在字符串是 的后缀,那么不论 的前面是否存在字符串是 的后缀, 的代价均为 ;
- 如果在 的后面不存在字符串是 的后缀,但在 的前面存在字符串是 的后缀,则找到离 最近的那个后缀,记其位置为 ,那么 的代价为 。
排序总代价为排序后每个字符串的代价之和。
请你找到一种排序方式,使得排序总代价最小。
你只需要输出最小的排序总代价。
输入
第一行:一个整数
接下来 行,每行一个字符串。
输出
一个整数,表示最小的排序总代价。
样例输入
2
a
ba
样例输出
2
样例解释
对于样例中的两个字符串 a , ba,有以下两种排序方式:
1、a , ba
a排在第 1 个位置,前后均不存在它的后缀,所以a的代价为 1ba排在第 2 个位置,前面存在它的后缀a,离它最近,位置为 1,所以ba的代价为 2-1=1
总代价为 1 + 1 = 2;
2、ba , a
ba排在第 1 个位置,后面存在它的后缀a,所以ba的代价为 =4;a排在第 2 个位置,前后均不存在它的后缀,所以a的代价为 2
总代价为 4 + 2 = 6。
综上,最小的排序总代价为 2。
数据范围
,所有字符串的长度之和不超过 。