/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
public class Main {
static long inf = 1000000007 ;
static int count_ones ( int n)
{
final int NIBBLE_LOOKUP [ ] =
{
0 , 1 , 1 , 2 , 1 , 2 , 2 , 3 ,
1 , 2 , 2 , 3 , 2 , 3 , 3 , 4
} ;
return NIBBLE_LOOKUP[ n & 0x0F] + NIBBLE_LOOKUP[ n >> 4 ] ;
}
public static void main
( String [ ] args
) { Scanner sc
= new Scanner
( System .
in ) ;
long ans = 1 ;
for ( int i = 0 ; i < str.length ( ) ; i++ ) {
char c = str.charAt ( i) ;
int nr;
if ( c >= '0' && c <= '9' )
nr = c - '0' ;
else if ( c >= 'a' && c <= 'z' )
nr = c - 'a' + 36 ;
else if ( c >= 'A' && c <= 'Z' )
nr = c - 'A' + 10 ;
else if ( c == '_' )
nr = 63 ;
else
nr = 62 ;
nr
= new Double ( Math .
pow ( 2 ,
5 - count_ones
( nr
) ) ) .
intValue ( ) * 2 + 1 ; ans %= inf;
ans = ans * nr;
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpwdWJsaWMgY2xhc3MgTWFpbiB7CglzdGF0aWMgbG9uZyBpbmYgPSAxMDAwMDAwMDA3OwoJCglzdGF0aWMgaW50IGNvdW50X29uZXMgKGludCBuKQoJewoJICAgZmluYWwgaW50IE5JQkJMRV9MT09LVVAgW10gPQoJICB7CgkgICAgMCwgMSwgMSwgMiwgMSwgMiwgMiwgMywgCgkgICAgMSwgMiwgMiwgMywgMiwgMywgMywgNAoJICB9OwoKCgkgIHJldHVybiBOSUJCTEVfTE9PS1VQW24gJiAweDBGXSArIE5JQkJMRV9MT09LVVBbbiA+PiA0XTsKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCVNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCVN0cmluZyBzdHIgPSBzYy5uZXh0KCk7CgkJCgkJbG9uZyBhbnMgPSAxOwoJCQoJCWZvciAoaW50IGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyBpKyspIHsKCQkJY2hhciBjID0gc3RyLmNoYXJBdChpKTsKCQkJaW50IG5yOwoJCQkKCQkJaWYgKCBjID49ICcwJyAmJiBjIDw9ICc5JyApCgkJCQluciA9IGMgLSAnMCc7CgkJCWVsc2UgaWYgKCBjID49ICdhJyAmJiBjIDw9ICd6JyApCgkJCQluciA9IGMgLSAnYScgKyAzNjsKCQkJZWxzZSBpZiAoIGMgPj0gJ0EnICYmIGMgPD0gJ1onICkKCQkJCW5yID0gYyAtICdBJyArIDEwOwoJCQllbHNlIGlmIChjID09ICdfJykKCQkJCW5yID0gNjM7CgkJCWVsc2UKCQkJCW5yID0gNjI7CgkJCQoJCQluciA9IG5ldyBEb3VibGUoTWF0aC5wb3coMiwgNSAtIGNvdW50X29uZXMobnIpKSkuaW50VmFsdWUoKSAqIDIgKyAxOwoJCQlhbnMgJT0gaW5mOwoJCQlhbnMgPSBhbnMgKiBucjsKCQl9CgkJCgkJU3lzdGVtLm91dC5wcmludGxuKGFucyk7Cgl9Cn0=