#include #include #include #include #include #include #include #include //rand()を使うために必要 #include #include #include #include #include using namespace std; template bool next_combination(const T first, const T last, int k) { const T subset = first + k; // empty container | k = 0 | k == n if (first == last || first == subset || last == subset) { return false; } T src = subset; while (first != src) { src--; if (*src < *(last - 1)) { T dest = subset; while (*src >= *dest) { dest++; } iter_swap(src, dest); std::rotate(src + 1, dest + 1, last); std::rotate(subset, subset + (last - dest) - 1, last); return true; } } // restore std::rotate(first, subset, last); return false; } void solve() { int N; string S; cin >> N >> S; vector vec_s; for (int i = 0; i < N; i++) vec_s.push_back(i); int ans = 0; if (N < 5) { cout << 0 << endl; return; } do { set char_set; for (int j = 0; j < 5; j++) { char_set.insert(S[vec_s[j]]); } if (S[vec_s[0]] == S[vec_s[2]] && char_set.size() == 4) ans++; } while (next_combination(vec_s.begin(), vec_s.end(), 5)); cout << ans << endl; } void check_sw() { // cout << "評価値算出=" << get_sum_time(eval_calculation_sw) / cnt_eval << endl; } int main() { solve(); // test(); // check_sw(); }