#P16287. [蓝桥杯 2026 省 Python A 组] 单词合并

    ID: 18302 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>字符串哈希 hashing2026蓝桥杯省赛STL

[蓝桥杯 2026 省 Python A 组] 单词合并

题目描述

小蓝的字典中有 nn 个互不相同的单词 s1,s2,,sns_1, s_2, \dots, s_n。每个单词仅由小写字母组成,长度不超过 2020

小蓝定义了一种操作:对一个单词进行下面两种变换之一:

  • 在任意位置插入一个小写字母;
  • 删除其中任意一个字母。

除插入或删除的位置外,原有字母的相对顺序保持不变。

现在请你统计有多少个有序单词对 (si,sj)(s_i, s_j)(其中 iji \ne j)满足:可以通过对 sis_i 恰好进行一次上述操作,使其变为 sjs_j

输入格式

第一行一个正整数 nn

接下来 nn 行,每行一个仅由小写字母组成的字符串,表示一个单词。

输出格式

输出一行一个整数,表示满足条件的有序单词对数量。

5
aab
ab
a
bb
b
8

提示

【样例说明】

满足条件的 88 个有序单词对分别为:

  • (aab,ab)(aab, ab):从 aabaab 中删除第 11 个字母 aa,得到 abab
  • (ab,aab)(ab, aab):在 abab 的第 11 个位置插入字母 aa,得到 aabaab
  • (ab,a)(ab, a):从 abab 中删除第 22 个字母 bb,得到 aa
  • (a,ab)(a, ab):在 aa 的第 22 个位置插入字母 bb,得到 abab
  • (ab,b)(ab, b):从 abab 中删除第 11 个字母 aa,得到 bb
  • (b,ab)(b, ab):在 bb 的第 11 个位置插入字母 aa,得到 abab
  • (bb,b)(bb, b):从 bbbb 中删除第 11 个字母 bb,得到 bb
  • (b,bb)(b, bb):在 bb 的第 11 个位置插入字母 bb,得到 bbbb

【评测用例规模与约定】

对于 30%30\% 的评测用例,1n1001 \leq n \leq 100

对于所有评测用例,1n100001 \leq n \leq 10000。保证所有单词互不相同。