#include "bits/stdc++.h" using namespace std; // マクロ群 #define REP(i,n) for(int i=0;i> S; ll memo['Z' + 1] = { 0 }; // 全体と個別の文字をカウント for (auto itr = S.begin(); itr != S.end(); ++itr) { ++memo[*itr]; ++len; } ll(*tri)[1010]; tri = PascalTriangle(len); for (int c = 'A'; c <= 'Z' && len > 0; ++c) { if (memo[c] < 1) continue; ans = ans * tri[len][memo[c]] % MOD; len -= memo[c]; } // 0除算の回避。MODを足した結果に対して-1を行うことで、最小値が1に留まる PFL_N((ans + MOD - 1) % MOD); } int main() { Solve(); return 0; }