#include using namespace std; using ll = unsigned long long; int main(){ string S;cin >> S; map>mp; int N = S.size(); for(int i = 0;i < N;i++){ mp[S[i]].push_back(i); } int ans = 0; for(auto &p:mp){ //最初の二文字をpから取り出す auto &pos = p.second;//その文字がある場所がどことどこと…か? int s = pos.size();//今見てる文字は全部で何か所にあるのか? if(s<2)continue;//1文字以下だったら2文字の組は作れない int cnt2 = 0; for(int i = 1;i < s;i++){//2文字目を動かしていく //1もじめの選び方はi通り //3文字目の選び方がいくつあるか? int nokori = s-i; int zentai_nokori = N-pos[i]; int cnt = max(0,zentai_nokori-nokori); cnt2+=cnt*i; } ans+=cnt2; } cout << ans << endl; }