#A1570. [ABC345C] 一次性交换(One Time Swap)

[ABC345C] 一次性交换(One Time Swap)

题目描述

你得到一个字符串 S S

找出通过执行以下操作恰好一次可以得到的不同字符串的数量。

  • N N S S 的长度。
  • 选择一对整数,满(i,j) (i,j) 足 ,并 1 i < j N 1\leq\ i\ <\ j\leq\ N 交换 S S 的第 i i 个和第 j j 个字符。

在本题的约束条件下,可以证明你总是可以执行这个操作。

输入格式

输入 S S

输出格式

输出通过在 S S 上执行上述操作恰好一次可以得到的不同字符串的数量

样例 #1

样例输入 #1

abc

样例输出 #1

3

样例 #2

样例输入 #2

aaaaa

样例输出 #2

1

提示

样例说明 1

S 的长度为 3,所以满足 1 i < j 3 1\leq\ i\ <\ j\leq\ 3 的整数对 有(i,j) (i,j) 三个: (1,2) (1,2) , (1,3) (1,3) , (2,3) (2,3)

  • 交换 S S 的第 1 个和第 2 个字符得到 bac
  • 交换 S S 的第 1 个和第 3 个字符得到 cba
  • 交换 S S 的第 2 个和第 3 个字符得到 acb

因此,对 abc 进行操作可以得到三个字符串:baccbaacb,所以打印 3

样例说明 2

交换任意两个字符都会使 S S 保持为 aaaaa

因此,只有一个字符串可以通过操作得到

数据范围

  • 2S1062 \le S \le 10^6SS 仅由小写英文字母组成。