#include using namespace std; using ll = unsigned long long; int main(){ string S;cin >> S; //i文字目を2文字目にするときの、3文字目の選び方 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; char c = p.first; int s = pos.size(); if(s<2)continue; //cout << s << endl; int cnt2 = 0; for(int i = 1;i < (int)pos.size();i++){ //前半の文字の選び方はi通り //後半がpos[i]にあるとき //3文字目の選び方 int nokori = pos.size()-i; int zentai_nokori = N-pos[i]; int cnt = zentai_nokori-nokori; cnt2+=cnt*i; } ans+=cnt2; } cout << ans << endl; }