排序
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小a有一个DNA序列串,强迫症的小a看它不顺眼,想将它排好序。
给定长为n的DNA序列串s(仅由`A,T,G,C`最多四种字符构成)。你可以进行任意次如下操作:任选两个位置i,j(),交换这两个字符s_i,s_j,花费为(即:s_i不断与交换,直到移动到j位置,再将s_j不断与交换,直到移动到i位置所需的总移动次数)。求将序列串中同种字符划分到一起的最小花费(如字符串`AGACG`,将其变成`AAGGC`或`GGAAC`或`CAAGG`...都是合法的,最小花费是2:`AAGGC`)。

输入描述:

输入一行,一个字符串s,表示题目描述所述的DNA序列串。

输出描述:

输出一个整数,表示将s中同种字符划分到一起的最小花费。
示例1

输入

复制
AGACG

输出

复制
2

备注:

字符串长度n满足