#include <iostream>
#include <vector>
#include <map>
using namespace std;
int countIntersections(const string &s) {
map<char, vector<int>> positions;
int n = s.size();
// Lưu vị trí xuất hiện của từng ký tự
for (int i = 0; i < n; i++) {
positions[s[i]].push_back(i);
}
int intersections = 0;
vector<pair<int, int>> segments;
// Tạo danh sách các đoạn nối
for (const auto &entry : positions) {
segments.push_back({entry.second[0], entry.second[1]});
}
// Đếm số giao điểm
int m = segments.size();
for (int i = 0; i < m; i++) {
for (int j = i + 1; j < m; j++) {
int a1 = segments[i].first, a2 = segments[i].second;
int b1 = segments[j].first, b2 = segments[j].second;
if ((a1 < b1 && b1 < a2 && a2 < b2) || (b1 < a1 && a1 < b2 && b2 < a2)) {
intersections++;
}
}
}
return intersections;
}
int main() {
string s;
cin >> s;
cout << countIntersections(s) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGNvdW50SW50ZXJzZWN0aW9ucyhjb25zdCBzdHJpbmcgJnMpIHsKICAgIG1hcDxjaGFyLCB2ZWN0b3I8aW50Pj4gcG9zaXRpb25zOwogICAgaW50IG4gPSBzLnNpemUoKTsKICAgIAogICAgLy8gTMawdSB24buLIHRyw60geHXhuqV0IGhp4buHbiBj4bunYSB04burbmcga8O9IHThu7EKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgcG9zaXRpb25zW3NbaV1dLnB1c2hfYmFjayhpKTsKICAgIH0KICAgIAogICAgaW50IGludGVyc2VjdGlvbnMgPSAwOwogICAgdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBzZWdtZW50czsKICAgIAogICAgLy8gVOG6oW8gZGFuaCBzw6FjaCBjw6FjIMSRb+G6oW4gbuG7kWkKICAgIGZvciAoY29uc3QgYXV0byAmZW50cnkgOiBwb3NpdGlvbnMpIHsKICAgICAgICBzZWdtZW50cy5wdXNoX2JhY2soe2VudHJ5LnNlY29uZFswXSwgZW50cnkuc2Vjb25kWzFdfSk7CiAgICB9CiAgICAKICAgIC8vIMSQ4bq/bSBz4buRIGdpYW8gxJFp4buDbQogICAgaW50IG0gPSBzZWdtZW50cy5zaXplKCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSBpICsgMTsgaiA8IG07IGorKykgewogICAgICAgICAgICBpbnQgYTEgPSBzZWdtZW50c1tpXS5maXJzdCwgYTIgPSBzZWdtZW50c1tpXS5zZWNvbmQ7CiAgICAgICAgICAgIGludCBiMSA9IHNlZ21lbnRzW2pdLmZpcnN0LCBiMiA9IHNlZ21lbnRzW2pdLnNlY29uZDsKICAgICAgICAgICAgaWYgKChhMSA8IGIxICYmIGIxIDwgYTIgJiYgYTIgPCBiMikgfHwgKGIxIDwgYTEgJiYgYTEgPCBiMiAmJiBiMiA8IGEyKSkgewogICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9ucysrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gaW50ZXJzZWN0aW9uczsKfQoKaW50IG1haW4oKSB7CiAgICBzdHJpbmcgczsKICAgIGNpbiA+PiBzOwogICAgY291dCA8PCBjb3VudEludGVyc2VjdGlvbnMocykgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9