#include <iostream> #include <string> using namespace std; int main() { int n; string s; cin >> n >> s; long long result = 0; int cnt[26] = {0}; // cnt[x]: 字母 x 出现的次数(作为第一个字符) long long pair_cnt[26][26] = {0}; // pair_cnt[a][b]: 以 a,b 作为前两个字符的组合数量 for (char ch : s) { int c = ch - 'a'; // 统计所有形如 a b b 的组合(a ≠ b) for (int a = 0; a < 26; ++a) { if (a != c) result += pair_cnt[a][c]; } // 更新 pair_cnt:所有 a b 组合,其中 b = 当前字符 for (int a = 0; a < 26; ++a) { if (a != c) pair_cnt[a][c] += cnt[a]; } // 当前字符可以作为第一个字符 cnt[c]++; } cout << result << endl; return 0; }