#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i = 0; i < n; i++)
#define int long long
int n;
int m;
string a;
        

vector<char> ch={'0','1','+','-','*','=','(',')'};
set<char> stch={'0','1','+','-','*','=','(',')'}; 


bool subcheck(int l,int r){
    if(l>r)return false;
    if(l==r){
        if(a[l]=='0'){
            return true;
        }
        if(a[l]=='1'){
            return true;
        }
        return false;
    }
    int dep=0;
    for(int i=l;i<=r;i++){
        if(a[i]=='('){
            dep++;
        }else if(a[i]==')'){
            dep--;
        }
        if(dep<0)return false;
    }
    if(dep!=0)return false;
    if(a[l]=='0'){
        if(a[l+1]=='('){
            return false;
        }
        if(a[l+1]==')'){
            return false;
        }
        if(a[l+1]=='1'){
            return false;
        }
        if(a[l+1]=='0'){
            return false;
        }
        return subcheck(l+2,r);
    }else if(a[l]=='1'){
        int x =-1;
        for(int i=l+1;i<=r;i++){
            if(!isdigit(a[i])){
                x = i;
                break;
            }
        }
        if(x==-1)return true;
        if(a[x]=='('){
            return false;
        }
        if(a[x]==')'){
            return false;
        }
        return subcheck(x+1,r);
    }else if(a[l]=='-'){
        return subcheck(l+1,r);
    }else if(a[l]=='('){
        for(int i=l;i<=r;i++){
            if(a[i]=='('){
                dep++;
            }else if(a[i]==')'){
                dep--;
            }
            if(dep==0){
                if(i==r){
                    return subcheck(l+1,r-1);
                }else{
                    if(a[i+1]=='+'||a[i+1]=='-'||a[i+1]=='*'){
                        return subcheck(l+1,i-1)&&subcheck(i+2,r);
                    }else{
                        return false;
                    }
                }
            }
        }
    }else{
        return false;
    }

}

bool check(){
    int cc = 0;
    int pl = 0;
    rep(i,a.size()){
        if(a[i]=='='){
            cc++;
            pl = i;
        }
    }
    if(cc!=1)return false;
    return (subcheck(0,pl-1)&&subcheck(pl+1,n-1));
}

int calc(int l,int r);
int calc2(int l,int r);

int calc3(int l,int r){
    int cnt =0;
    int x =-1;
    for(int i=l;i<=r;i++){
        if(a[i]=='-'){
            cnt++;
        }else{
            x = i;
            break;
        }
    }
    if(isdigit(a[x])){
        int tmp = 0;
        for(int i=x;i<=r;i++){
            tmp *= 2;
            tmp += a[i]-'0';
        }
        // cerr << cnt << endl;
        //  cerr <<l << "     "<< x << "       " << r << endl;
        // cerr << a.substr(l,2) << " " <<tmp << endl;
        if(cnt%2==0){
            return tmp;
        }else{
            return -tmp;
        }
    }else{
        if(cnt%2==0){
            return calc(x+1,r-1);
        }else{
            return -calc(x+1,r-1);
        }   
    }
}

int calc2(int l,int r){
    int dep =0;
    int tmp = 1;
    int prel =l;
    for(int i=l;i<=r;i++){
        if(a[i]=='('){
            dep++;
        }else if(a[i]==')'){
            dep--;
        }
        if(dep==0&&a[i]=='*'){
            tmp *= calc3(prel,i-1);
            prel=i+1;
        }
    }
    tmp *= calc3(prel,r);
    return tmp;
}

int calc(int l,int r){
    if(l==r){
        if(a[l]=='0'){
            return 0;
        }
        if(a[l]=='1'){
            return 1;
        }
    }
    int dep=0;
    int cnt=0;
    int prel= l;
    bool minusflag =0;
    int tmp =0;
    for(int i=l;i<=r;i++){
        if(dep==0){
            if(a[i]=='('){
                cnt++;
            }
            if(isdigit(a[i])){
                cnt++;
            }
            if(a[i]=='-'){
                if(cnt != 0){
                    if(minusflag){
                        tmp -= calc2(prel,i-1);
                    }else{
                        tmp += calc2(prel,i-1);
                    }
                    cnt = 0;
                    prel = i+1;
                    minusflag = true;
                }
                
            }
            if(a[i]=='+'){
                if(minusflag){
                    tmp -= calc2(prel,i-1);
                }else{
                    tmp += calc2(prel,i-1);
                }
                cnt = 0;
                prel = i+1;
                minusflag =false;
            }
            if(a[i]=='*'){
                cnt = 0;
            }
        }
        if(a[i]=='('){
            dep++;
        }else if(a[i]==')'){
            dep--;
        }
    }
    if(minusflag){
        tmp -= calc2(prel,r);
    }else{
        tmp += calc2(prel,r);
    }
    return tmp;
}


bool eqcheck(){
    int cc = 0;
    int pl = 0;
    rep(i,a.size()){
        if(a[i]=='='){
            cc++;
            pl = i;
        }
    }
    if(cc!=1)return false;
    //cerr << calc(0,pl-1) << " " << calc(pl+1,n-1) << endl;
    return (calc(0,pl-1)==calc(pl+1,n-1));
}



signed main(){
    string s;
    cin >> s;
    map<char,int>mp;
    for(int i=0;i<s.size();i++){
        if(stch.count(s[i])==1)continue;
        mp[s[i]]++;
    }
    
    if(mp.size()>8){
        cout << 0 << endl;
        return 0;
    }
    vector<char> ori;
    for(auto x:mp){
        ori.push_back(x.first);
        
    }
    n = s.size();
    m = mp.size();
    vector<int>v(8);
    rep(i,8)v[i] =i;
    int ans =0;
    a.resize(n);
    set<string> st;
    do{
        map<char,char>trans;
        for(int i=0;i<ori.size();i++){
            trans[ori[i]] =  ch[v[i]];
        }
        for(int i=0;i<n;i++){
            if(stch.count(s[i])==1){
                a[i] = s[i];
            }else{
                a[i] = trans[s[i]];
            }
        }
        if(st.count(a)==1){
            continue;
        }
        st.insert(a);
        if(check()){
            //cerr << a << endl;
            if(eqcheck()){
                //cerr << a << endl;
                ans++;
            }
        }
    }while(next_permutation(v.begin(),v.end()));
    cout << ans << endl;
    return 0;
}


Measured memory_bytes: 7548