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$。保证所有单词互不相同。