AT_abc345_c [ABC345C] One Time Swap

题目描述

给定一个字符串 $S$。请你求出对 $S$ 进行如下操作**恰好一次**后,可能得到的不同字符串的个数。 - 设 $S$ 的长度为 $N$。选择满足 $1\leq i < j\leq N$ 的整数对 $(i, j)$,交换 $S$ 的第 $i$ 个字符和第 $j$ 个字符。 另外,在本题的限制条件下,可以保证一定能够进行上述操作。

输入格式

输入以以下格式从标准输入读入。 > $S$

输出格式

请输出对 $S$ 进行题目中所述操作恰好一次后,可能得到的不同字符串的个数。

说明/提示

### 限制条件 - $S$ 是由小写英文字母组成的字符串,长度满足 $2 \leq |S| \leq 10^6$。 ### 样例解释 1 由于 $S$ 的长度为 $3$,满足 $1\leq i < j\leq 3$ 的整数对 $(i, j)$ 有 $(1,2)$、$(1,3)$、$(2,3)$ 共 $3$ 种。 - 交换 $S$ 的第 $1$ 个和第 $2$ 个字符时,$S$ 变为 `bac`。 - 交换 $S$ 的第 $1$ 个和第 $3$ 个字符时,$S$ 变为 `cba`。 - 交换 $S$ 的第 $2$ 个和第 $3$ 个字符时,$S$ 变为 `acb`。 因此,对于 `abc`,操作后可能得到的字符串为 `bac`、`cba`、`acb`,共 $3$ 种,所以输出 $3$。 ### 样例解释 2 无论交换哪两个字符,$S$ 始终为 `aaaaa`。因此,操作后可能得到的字符串只有 $1$ 种。 由 ChatGPT 4.1 翻译