#include <bits/stdc++.h>
using namespace std;
template <typename T>
T absll(T X) {
  if (X < 0)
    return -1 * X;
  else
    return X;
}
long long modPow(long long A, long long B, long long C) {
  long long X = 1LL;
  while (B) {
    if (B & 1) {
      X = (X * A) % C;
    }
    A = (A * A) % C;
    B /= 2LL;
  }
  return X % C;
}
int main() {
  map<char, int> base;
  int val = 0;
  for (char ch = '0'; ch <= '9'; ch++) {
    base[ch] = val;
    ++val;
  }
  for (char ch = 'A'; ch <= 'Z'; ch++) {
    base[ch] = val;
    ++val;
  }
  for (char ch = 'a'; ch <= 'z'; ch++) {
    base[ch] = val;
    ++val;
  }
  base['-'] = 62;
  base['_'] = 63;
  string str;
  cin >> str;
  long long cnt = 0LL;
  for (int i = 0; i < str.length(); i++) {
    int num = base[str[i]];
    bitset<6> B(num);
    B.flip();
    cnt += (long long)B.count();
  }
  printf("%lld\n", modPow(3LL, cnt, 1000000007LL));
  return 0;
}
