#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
typedef long long int ll;
ll ans;
ll c[30][30];
void build()
{
c[0][0]=0;c[0][1]=c[1][1]=1;
for(int i=1;i<=26;i++) c[i][0]=1;
for(int i=1;i<=26;i++)
for(int j=1;j<=i;j++)
c[i][j]=c[i-1][j]+c[i-1][j-1];
}
int main()
{
string s;
cin>>s;
int len=s.size();
build();
int now=0;// 0-a
for(int i=1;i<len;i++)
{
if(s[i]<=s[i-1])
{
printf("0");
return 0;
}
}
for(int i=1;i<len;i++) ans+=c[26][i];
for(int i=0;i<len;i++)
{
if(s[i]==now+'a')
{
now++;continue;
}
while(now+'a'<s[i])
{
int order=c[26-now-1][len-i-1];
ans+=order;
now++;//
}
now++;
}
if(len>1) ans++;
cout<<ans;
return 0;
}
找不到问题,随便试了长度1-6的几个点结果都是正确的,感谢好心的大佬。