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

题目描述

小蓝的字典中有 $n$ 个互不相同的单词 $s_1, s_2, \dots, s_n$。每个单词仅由小写字母组成,长度不超过 $20$。 小蓝定义了一种操作:对一个单词进行下面两种变换之一: - 在任意位置插入一个小写字母; - 删除其中任意一个字母。 除插入或删除的位置外,原有字母的相对顺序保持不变。 现在请你统计有多少个有序单词对 $(s_i, s_j)$(其中 $i \ne j$)满足:可以通过对 $s_i$ 恰好进行一次上述操作,使其变为 $s_j$。

输入格式

第一行一个正整数 $n$。 接下来 $n$ 行,每行一个仅由小写字母组成的字符串,表示一个单词。

输出格式

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

说明/提示

### 【样例说明】 满足条件的 $8$ 个有序单词对分别为: - $(aab, ab)$:从 $aab$ 中删除第 $1$ 个字母 $a$,得到 $ab$; - $(ab, aab)$:在 $ab$ 的第 $1$ 个位置插入字母 $a$,得到 $aab$; - $(ab, a)$:从 $ab$ 中删除第 $2$ 个字母 $b$,得到 $a$; - $(a, ab)$:在 $a$ 的第 $2$ 个位置插入字母 $b$,得到 $ab$; - $(ab, b)$:从 $ab$ 中删除第 $1$ 个字母 $a$,得到 $b$; - $(b, ab)$:在 $b$ 的第 $1$ 个位置插入字母 $a$,得到 $ab$; - $(bb, b)$:从 $bb$ 中删除第 $1$ 个字母 $b$,得到 $b$; - $(b, bb)$:在 $b$ 的第 $1$ 个位置插入字母 $b$,得到 $bb$。 ### 【评测用例规模与约定】 对于 $30\%$ 的评测用例,$1 \leq n \leq 100$; 对于所有评测用例,$1 \leq n \leq 10000$。保证所有单词互不相同。