#include<bits/stdc++.h>
using namespace std;
#define int long long
bool flg;
int expr(string s,int& p);
int term(string s,int& p);
int factor(string s,int& p);
int number(string s,int& p);
int expr(string s,int& p){
  int res=term(s,p);
  while(p<(int)s.size()){
    if(flg) return 0;
    if(s[p]=='+'){
      p++;
      res+=term(s,p);
      continue;
    }
    if(s[p]=='-'){
      p++;
      res-=term(s,p);
      continue;
    }
    break;
  }
  return res;
}
int term(string s,int& p){
  int res=factor(s,p);
  while(p<(int)s.size()){
    if(flg) return 0;
    if(s[p]=='*'){
      p++;
      res*=factor(s,p);
      continue;
    }
    break;
  }
  return res;
}
int factor(string s,int& p){
  int res;
  if(s[p]=='-'){
    p++;
    res=-factor(s,p);
  }else if(s[p]=='('){
    p++;
    res=expr(s,p);
    if(p>=(int)s.size()||s[p]!=')'){
      flg=1;
      return 0;
    }
    p++;
  }else if(isdigit(s[p])){
    res=number(s,p);
  }else{
    flg=1;
    return 0;
  }
  return res;
}
int number(string s,int& p){
  if(s[p]=='0'){
    if(p+1<(int)s.size()&&isdigit(s[p+1])){
      flg=1;
      return 0;
    }
    p++;
    return 0;
  }
  int res=0;
  while(p<(int)s.size()&&isdigit(s[p])) res=res*2+s[p++]-'0';
  return res;
}
bool check(string s){
  if(s.size()==0) return 0;
  int op=0;
  for(int i=0;i<(int)s.size();i++){
    if(s[i]=='(') op++;
    if(s[i]==')') op--;
    if(op<0) return 0;
  }
  if(op) return 0;
  return 1;
}
//set<string> ss;
int Q(string s){
  if(count(s.begin(),s.end(),'=')!=1) return 0;
  int k=s.find('=');
  string a=s.substr(0,k);
  string b=s.substr(k+1,s.size()-(k+1));
  if(!check(a)) return 0;
  if(!check(b)) return 0;
  //cout<<s<<endl;
  //cout<<a<<" "<<b<<endl;
  flg=0;
  int p=0;
  int x=expr(a,p);
  //cout<<flg<<" "<<p<<" "<<x<<endl;
  if(flg||p!=(int)a.size()) return 0;
  p=0;
  int y=expr(b,p);
  //cout<<flg<<" "<<p<<" "<<y<<endl;
  if(flg||p!=(int)b.size()) return 0;
  //cout<<a<<" "<<b<<endl;
  //cout<<x<<":"<<y<<endl;
  return x==y;
}
int ans=0;
string l="01+-*()=";
void dfs(string s,int b){
  bool f=1;
  for(int i=0;i<(int)s.size();i++){
    if(!isalpha(s[i])) continue;
    f=0;
    char c=s[i];
    for(int j=0;j<(int)l.size();j++){
      if((b>>j)&1) continue;
      string t=s;
      for(int k=0;k<(int)s.size();k++){
    if(t[k]==c) t[k]=l[j];
      }
      dfs(t,b+(1<<j));
    }
    break;
  }
  if(f) ans+=Q(s);
}
signed main(){
  string s;
  cin>>s;
    
  dfs(s,0);
  cout<<ans<<endl;
  return 0;
}
