#2007. 外星密码破解(AlienPC.cpp)

外星密码破解(AlienPC.cpp)

题目描述

在一次宇宙探险中,宇航员 Z 发现了一段奇怪的外星字符序列 SS,它被认为是外星文明的机密通信密码。为了破解密码,Z 需要通过对字符序列进行操作来生成尽可能多的有效变种密码。

操作的规则如下:Z 可以选择密码字符串 SS 中的任意两个位置 iijj,然后交换这两个位置的字符。每次操作仅允许交换一次。Z 想知道,通过一次这样的操作,最多可以生成多少个不同的密码组合。

  • 注意,问的是操作一次后能得到的密码种类,请结合样例 11 理解。

更具体地描述为:假设密码字符串 SS 的长度为 nn,下标从 11 开始。Z 可以选择一个二元组 (i,j)(i, j),然后交换 SS 中的第 ii 个字符和第 jj 个字符,其中 1i<jn1 \leq i < j \leq n

你的任务是帮助 Z 计算出可以通过一次操作生成的不同密码的数量。

输入格式

输入一行仅包含小写英文字母组成的字符串 SS,表示外星密码。

输出格式

输出一行一个整数,表示通过一次操作可以生成的不同密码数量。

样例

abc
3
aaa
1

说明/提示

样例 1 解释

交换 s1s_1s2s_2 会得到 bac

交换 s1s_1s3s_3 会得到 cba

交换 s2s_2s3s_3 会得到 acb

会产生 33 种不同的字符串。

数据范围

1S1061\le |S|\le 10^6