#include using namespace std; #ifdef LOCAL #include "settings/debug.cpp" #else #define Debug(...) void(0) #endif #define rep(i, n) for (int i = 0; i < (n); ++i) using ll = long long; using ull = unsigned long long; constexpr int MOD = 573; class Integer { map factors; public: Integer() = default; Integer(int n) { for (int i = 2; i * i <= n; i++) { while (n % i == 0) { factors[i]++; n /= i; } } if (n > 1) factors[n]++; } int out() const { int res = 1; for (auto [p, e] : factors) { rep(_, e) res = res * p % MOD; } return res; } Integer operator*(const Integer& rhs) const { Integer res; for (auto [p, e] : factors) res.factors[p] += e; for (auto [p, e] : rhs.factors) res.factors[p] += e; return res; } Integer operator/(const Integer& rhs) const { Integer res; for (auto [p, e] : factors) res.factors[p] += e; for (auto [p, e] : rhs.factors) res.factors[p] -= e; return res; } }; int main() { string s; cin >> s; vector fact(s.size() + 1); rep(i, s.size()) fact[i + 1] = Integer(i + 1) * fact[i]; vector cnt(26, 0); for (char c : s) cnt[c - 'A']++; Integer res = fact[s.size()]; for (int c : cnt) res = res / fact[c]; cout << (res.out() - 1 + MOD) % MOD << '\n'; return 0; }