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