#include <iostream>
#include <cmath>
#include <vector>
#include <string>
#include <bits/stdc++.h>
#include <cstdlib>
#include <time.h>
#include <fstream>
#include <iterator>
#include <utility>
#include <algorithm>
using namespace std;
typedef vector<int> vi;
#define ll long long
#define all(v) ((v).begin()), ((v).end())
#define sz(v) ((int)((v).size()))
#define vinp(v, n) \
for (int i = 0; i < (n); i++) \
cin >> (v)[i]
#define printv(v) \
for (auto i : (v)) \
cout << i << " "
#define fast() \
ios::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0);
#define loop(n) for (int i = 0; i < (n); i++)
#define _CRT_SECURE_NO_WARNING
const ll MOD = 1000000007;
ll fac(ll x)
{
if(x==1 || x==0){
return 1;
}
else{
return ((x%MOD)*(fac(x-1)%MOD))%MOD;
}
}
int main()
{
string s;
cin >> s;
ll c=-1;
ll freq[123]={};
ll n=s.size();
for(ll i=0;i<n;i++){
freq[s[i]]++;
if(freq[s[i]]==1){
c++;
}
}
ll a=fac(n)%MOD;
ll b=fac(n-c)%MOD;
ll res=(a/b)%MOD;
cout <<res;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxhbGdvcml0aG0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGFsbCh2KSAoKHYpLmJlZ2luKCkpLCAoKHYpLmVuZCgpKQojZGVmaW5lIHN6KHYpICgoaW50KSgodikuc2l6ZSgpKSkKCiNkZWZpbmUgdmlucCh2LCBuKSAgICAgICAgICAgICAgICBcCiAgICBmb3IgKGludCBpID0gMDsgaSA8IChuKTsgaSsrKSBcCiAgICBjaW4gPj4gKHYpW2ldCiNkZWZpbmUgcHJpbnR2KHYpICAgICAgXAogICAgZm9yIChhdXRvIGkgOiAodikpIFwKICAgIGNvdXQgPDwgaSA8PCAiICIKI2RlZmluZSBmYXN0KCkgICAgICAgICAgICAgICBcCiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsgXAogICAgY2luLnRpZSgwKTsgICAgICAgICAgICAgIFwKICAgIGNvdXQudGllKDApOwojZGVmaW5lIGxvb3AobikgZm9yIChpbnQgaSA9IDA7IGkgPCAobik7IGkrKykKI2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HCgpjb25zdCBsbCBNT0QgPSAxMDAwMDAwMDA3OwoKbGwgZmFjKGxsIHgpCnsKICAgIGlmKHg9PTEgfHwgeD09MCl7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBlbHNlewogICAgICAgIHJldHVybiAoKHglTU9EKSooZmFjKHgtMSklTU9EKSklTU9EOwogICAgfQp9CmludCBtYWluKCkKewogICAgc3RyaW5nIHM7CiAgICBjaW4gPj4gczsKICAgIGxsIGM9LTE7CiAgICBsbCBmcmVxWzEyM109e307CiAgICBsbCBuPXMuc2l6ZSgpOwogICAgZm9yKGxsIGk9MDtpPG47aSsrKXsKICAgICAgICBmcmVxW3NbaV1dKys7CiAgICAgICAgaWYoZnJlcVtzW2ldXT09MSl7CiAgICAgICAgICAgIGMrKzsKICAgICAgICB9CiAgICB9CiAgICBsbCBhPWZhYyhuKSVNT0Q7CiAgICBsbCBiPWZhYyhuLWMpJU1PRDsKICAgIGxsIHJlcz0oYS9iKSVNT0Q7CiAgICBjb3V0IDw8cmVzOwogICAgcmV0dXJuIDA7Cn0=