#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int C[27][27];
string str;
int ans;
void C_n_m(){
memset(C , 0 , sizeof(C));
for(int i=0;i<=26;i++){
for(int j=0;j<=i;j++){
if(!j || i==j)
C[i][j] = 1;
else
C[i][j] = C[i-1][j] + C[i-1][j-1];
}
}
return ;
}
int main(){
ans = 1;
C_n_m();
cin>>str;
for(string::iterator p = str.begin()+1 ; p < str.end() ; p++)
if(*p <= *(p-1)){
cout<<0<<endl;
return 0;
}
int len = str.length();
for(int i=1;i<len;i++)
ans += C[26][i];
for(int i=0;i<len;i++){
char cur = (!i ? 'a' : str[i-1] + 1);
while(cur < str[i]){
ans += C['z' - cur][len - (i+1)];
cur++;
}
}
cout<<ans<<endl;
return 0;
}
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int C[27][27];
string str;
int ans;
void C_n_m(){
memset(C , 0 , sizeof(C));
for(int i=0;i<=26;i++){
for(int j=0;j<=i;j++){
if(!j || i==j)
C[i][j] = 1;
else
C[i][j] = C[i-1][j] + C[i-1][j-1];
}
}
return ;
}
int main(){
C_n_m();
while(cin>>str){
bool ascending = true;
for(string::iterator p = str.begin()+1 ; p < str.end() ; p++)
if(*p <= *(p-1)){
cout<<0<<endl;
ascending = false;
}
if(!ascending)
continue;
ans = 1;
int len = str.length();
for(int i=1;i<len;i++)
ans += C[26][i];
for(int i=0;i<len;i++){
char cur = (!i ? 'a' : str[i-1] + 1);
while(cur < str[i]){
ans += C['z' - cur][len - (i+1)];
cur++;
}
}
cout<<ans<<endl;
}
return 0;
}