#include #define REP(i, x, n) for(int i = x; i < (int)(n); i++) #define rep(i, n) REP(i, 0, n) #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define F first #define S second #define mp make_pair using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair P; int main() { // ios_base::sync_with_stdio(false); string S; vector cnt(26, 0); cin >> S; int n = S.size(); rep(i, n) { cnt[S[i]- 'A']++; } const int mod = 573; vector> nCk(n + 1, vector(n + 1, 0)); nCk[0][0] = 1; rep(i, n) REP(j, 0, i + 1) { nCk[i + 1][j] += nCk[i][j]; nCk[i + 1][j] %= mod; nCk[i + 1][j + 1] += nCk[i][j]; nCk[i + 1][j + 1] %= mod; } ll ans = 1; rep(i, 26) { if(cnt[i]) { ans *= nCk[n][cnt[i]]; ans %= mod; n -= cnt[i]; } } ll tmp = 1; rep(i, n) { tmp *= cnt[S[i] - 'A']; tmp %= mod; } ans -= tmp; while(ans < 0) ans += mod; cout << ans << endl; return 0; }