func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( Ofast )   using namespace std;   long long int invmod(long long int x, long long int n, long long int mod) {     if (n == 0) return 1 % mod;     long long int half = invmod(x, n / 2, mod);     half = (half * half) % mod;     if (n % 2 == 1) half = (half * (x % mod)) % mod;     return half;   }   long long int bin(vector<long long int> &a, long long int l, long long int r,                     long long int x) {     if (l <= r) {       long long int m = l + (r - l) / 2;       if (a[m] == x)         return m;       else if (a[m] > x)         return bin(a, l, m - 1, x);       else         return bin(a, m + 1, r, x);     } else       return -1;   }   long long int power(long long int b, long long int e, long long int m) {     if (e == 0) return 1;     if (e % 2)       return b * power(b * b % m, (e - 1) / 2, m) % m;     else       return power(b * b % m, e / 2, m);   }   long long int power(long long int b, long long int e) {     if (e == 0) return 1;     if (e % 2)       return b * power(b * b, (e - 1) / 2);     else       return power(b * b, e / 2);   }   long long int ncr(long long int n, long long int p) {     long long int r = min(p, n - p), rf = 1, ln = 1;     for (long long int i = 1; i <= r; i++) rf = rf * i;     for (long long int i = 0; i < r; i++) ln = ln * (n - i);     return ln / rf;   }   bool sbs(pair<long long int, long long int> &a,            pair<long long int, long long int> &b) {     return (a.second < b.second);   }   bool sbds(pair<long long int, long long int> &a,             pair<long long int, long long int> &b) {     return (a.second > b.second);   }   long long int SUM(vector<long long int> &a, long long int n) {     long long int sum = 0;     for (long long int i = 0; i < n; i++) sum += a[i];     return sum;   }   long long int chkprm(long long int n) {     long long int x = 5, s = sqrt(n);     if (n < 2) return 0;     if (n < 4) return 1;     if ((n & 1) == 0) return 0;     if (n % 3 == 0) return 0;     while (x <= s) {       if (n % x == 0) return 0;       x += 2;       if (n % x == 0) return 0;       x += 4;     }     return 1;   }   long long int merge(long long int arr[], long long int temp[],                       long long int left, long long int mid,                       long long int right) {     long long int inv_count = 0;     long long int i = left;     long long int j = mid;     long long int k = left;     while ((i <= mid - 1) && (j <= right)) {       if (arr[i] <= arr[j])         temp[k++] = arr[i++];       else {         temp[k++] = arr[j++];         inv_count = inv_count + (mid - i);       }     }     while (i <= mid - 1) temp[k++] = arr[i++];     while (j <= right) temp[k++] = arr[j++];     for (i = left; i <= right; i++) arr[i] = temp[i];     return inv_count;   }   long long int _mergeSort(long long int arr[], long long int temp[],                            long long int left, long long int right) {     long long int mid, inv_count = 0;     if (right > left) {       mid = (right + left) / 2;       inv_count = _mergeSort(arr, temp, left, mid);       inv_count += _mergeSort(arr, temp, mid + 1, right);       inv_count += merge(arr, temp, left, mid + 1, right);     }     return inv_count;   }   long long int countSwaps(long long int arr[], long long int n) {     long long int temp[n];     return _mergeSort(arr, temp, 0, n - 1);   }   void myth() {     long long int n;     cin >> n;     string s;     cin >> s;     set<long long int> s1[26];     for (long long int i = 0; i < n; i++) s1[s[i] -  a ].insert(i + 1);     vector<long long int> cnt(n + 1);     reverse(s.begin(), s.end());     for (long long int i = 0; i < n; i++) {       cnt[*s1[s[i] -  a ].begin()] = i + 1;       s1[s[i] -  a ].erase(s1[s[i] -  a ].begin());     }     long long int a[n];     for (long long int i = 1; i <= n; i++) a[i - 1] = cnt[i];     cout << countSwaps(a, n);   }   signed main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long int test_case = 1;     while (test_case--) {       myth();       cout <<   n ;     }     cerr <<   n           <<  Time Elasped :   << 1.0 * clock() / CLOCKS_PER_SEC <<   n ;     return 0;   }   