#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mk make_pair
#define pi pair<int,int>
#define pb push_back
vector<int> a;
int n;
long long mod =1000000007;
long long dp[100005];
long long findit(int idx) {
if(idx==n) {
return 1;
}
if(dp[idx]!=-1)
return dp[idx];
long long res=0;
int t, g;
for(int i=0;i<=9;i++) {
for(int j=0;j<=9;j++) {
int g = i&j;
if(g ==a[idx]) {
res+= findit(idx+1);
res%=mod;
}
}
for(int j=10;j<=35;j++) {
g = i & j;
if(g==a[idx]) {
res+= findit(idx+1);
res%=mod;
}
}
for(int j=36;j<=63;j++) {
g=i&j;
if(g==a[idx]) {
res+= findit(idx+1);
res%=mod;
}
}
}
for(int i=10;i<=35;i++) {
for(int j=0;j<=9;j++) {
g=i&j;
if(g==a[idx]) {
res+= findit(idx+1);
res%=mod;
}
}
for(int j=10;j<=35;j++) {
g=i&j;
if(g==a[idx]) {
res+= findit(idx+1);
res%=mod;
}
}
for(int j=36;j<=63;j++) {
g=i&j;
if(g==a[idx]) {
res+= findit(idx+1);
res%=mod;
}
}
}
for(int i=36;i<=63;i++) {
for(int j=0;j<=9;j++) {
g=i&j;
if(g==a[idx]) {
res+= findit(idx+1);
res%=mod;
}
}
for(int j=10;j<=35;j++) {
g=i&j;
if(g==a[idx]) {
res+= findit(idx+1);
res%=mod;
}
}
for(int j=36;j<=63;j++) {
g=i&j;
if(g==a[idx]) {
res+= findit(idx+1);
res%=mod;
}
}
}
dp[idx]=res%mod;
return dp[idx];
}
int main() {
a.clear();
string s;
cin >> s;
n=s.length();
memset(dp,-1,sizeof(dp));
for(int i=0;i<s.length();i++) {
int x;
x=s[i];
if(s[i]>='0' && s[i]<='9')
x=0+ s[i]-'0';
if(s[i]>='A' && s[i]<='Z')
x=10+s[i]-'A';
if(s[i]>='a' && s[i]<='z')
x=36+s[i]-'a';
if(s[i]=='-')
x=62;
if(s[i]=='_')
x=63;
a.push_back(x);
}
long long ans = findit(0);
cout << ans << endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBtayBtYWtlX3BhaXIKI2RlZmluZSBwaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCnZlY3RvcjxpbnQ+IGE7CmludCBuOwpsb25nIGxvbmcgbW9kID0xMDAwMDAwMDA3Owpsb25nIGxvbmcgZHBbMTAwMDA1XTsKbG9uZyBsb25nIGZpbmRpdChpbnQgaWR4KSB7CglpZihpZHg9PW4pIHsKCQlyZXR1cm4gMTsKCX0KCWlmKGRwW2lkeF0hPS0xKQoJCXJldHVybiBkcFtpZHhdOwoJbG9uZyBsb25nIHJlcz0wOwoJCWludCB0LCBnOwoJCWZvcihpbnQgaT0wO2k8PTk7aSsrKSB7CgkJCWZvcihpbnQgaj0wO2o8PTk7aisrKSB7CgkJCQlpbnQgZyA9IGkmajsKCQkJCWlmKGcgPT1hW2lkeF0pIHsKCQkJCQlyZXMrPSBmaW5kaXQoaWR4KzEpOwoKCgkJCQkJcmVzJT1tb2Q7CgkJCQl9CgkJCX0KCQkJZm9yKGludCBqPTEwO2o8PTM1O2orKykgewoJCQkJZyA9IGkgJiBqOwoJCQkJaWYoZz09YVtpZHhdKSB7CgkJCQkJcmVzKz0gZmluZGl0KGlkeCsxKTsKCQkJCQlyZXMlPW1vZDsKCQkJCX0KCQkJfQoJCQlmb3IoaW50IGo9MzY7ajw9NjM7aisrKSB7CgkJCQlnPWkmajsKCQkJCWlmKGc9PWFbaWR4XSkgewoKCQkJCQlyZXMrPSBmaW5kaXQoaWR4KzEpOwoJCQkJCXJlcyU9bW9kOwoJCQkJfQoJCQl9CgkJfQoJCWZvcihpbnQgaT0xMDtpPD0zNTtpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTA7ajw9OTtqKyspIHsKCQkJCWc9aSZqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGc9PWFbaWR4XSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzKz0gZmluZGl0KGlkeCsxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyU9bW9kOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTEwO2o8PTM1O2orKykgewoJCQkJZz1pJmo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZz09YVtpZHhdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMrPSBmaW5kaXQoaWR4KzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzJT1tb2Q7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGo9MzY7ajw9NjM7aisrKSB7CgkJCQlnPWkmajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihnPT1hW2lkeF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcys9IGZpbmRpdChpZHgrMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMlPW1vZDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgkJZm9yKGludCBpPTM2O2k8PTYzO2krKykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGo9MDtqPD05O2orKykgewoJCQkJZz1pJmo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZz09YVtpZHhdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMrPSBmaW5kaXQoaWR4KzEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzJT1tb2Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaj0xMDtqPD0zNTtqKyspIHsKCQkJCWc9aSZqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGc9PWFbaWR4XSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzKz0gZmluZGl0KGlkeCsxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyU9bW9kOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGo9MzY7ajw9NjM7aisrKSB7CgkJCQlnPWkmajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihnPT1hW2lkeF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcys9IGZpbmRpdChpZHgrMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMlPW1vZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCQlkcFtpZHhdPXJlcyVtb2Q7CgkJcmV0dXJuIGRwW2lkeF07Cn0KCgppbnQgbWFpbigpIHsKCWEuY2xlYXIoKTsKCXN0cmluZyBzOwoJY2luID4+IHM7CgluPXMubGVuZ3RoKCk7CgltZW1zZXQoZHAsLTEsc2l6ZW9mKGRwKSk7Cglmb3IoaW50IGk9MDtpPHMubGVuZ3RoKCk7aSsrKSB7CgkJaW50IHg7CgkJeD1zW2ldOwoJCWlmKHNbaV0+PScwJyAmJiBzW2ldPD0nOScpCgkJCXg9MCsgc1tpXS0nMCc7CgkJaWYoc1tpXT49J0EnICYmIHNbaV08PSdaJykKCQkJeD0xMCtzW2ldLSdBJzsKCQlpZihzW2ldPj0nYScgJiYgc1tpXTw9J3onKQoJCQl4PTM2K3NbaV0tJ2EnOwoJCWlmKHNbaV09PSctJykKCQkJeD02MjsKCQlpZihzW2ldPT0nXycpCgkJCXg9NjM7CgkJYS5wdXNoX2JhY2soeCk7Cgl9Cglsb25nIGxvbmcgYW5zID0gZmluZGl0KDApOwoJY291dCA8PCBhbnMgPDwgZW5kbDsKfQ==