# include<stdio.h>
char a[15];
long long f(long long a){ //求阶乘
long long sum=1;
int i;
for(i=1;i<=a;i++)
sum=sum*i;
return sum;
}
int cmp(int n){ //康拓展开 小于该位置的数有几个 count 就是几
int count=0;
for(int i=n;i<11;i++)
if(a[n]>a[i+1]) count++;
return count;
}
int main(){
long long sum;
int i;
while(~scanf("%s",a)){
sum=0;
for(i=0;i<12;i++)
sum=sum+cmp(i)*f(11-i); //康拓展开 从左往右 分别是0----n-1
printf("%lld\n",sum+1); // 注意最后+1, 最后答案就是该字符穿顺序就是在全排列中排第几(从小到大)
}
}
char a[15];
long long f(long long a){ //求阶乘
long long sum=1;
int i;
for(i=1;i<=a;i++)
sum=sum*i;
return sum;
}
int cmp(int n){ //康拓展开 小于该位置的数有几个 count 就是几
int count=0;
for(int i=n;i<11;i++)
if(a[n]>a[i+1]) count++;
return count;
}
int main(){
long long sum;
int i;
while(~scanf("%s",a)){
sum=0;
for(i=0;i<12;i++)
sum=sum+cmp(i)*f(11-i); //康拓展开 从左往右 分别是0----n-1
printf("%lld\n",sum+1); // 注意最后+1, 最后答案就是该字符穿顺序就是在全排列中排第几(从小到大)
}
}