#include<bits/stdc++.h>
using namespace std;
#define il inline
#define ri register int
#define ll long long
il ll read(){
bool f=true;ll x=0;
register char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-') f=false;ch=getchar();}
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
if(f) return x;
return ~(--x);
}
il void write(const ll &x){if(x>9) write(x/10);putchar(x%10+'0');}
il void print(const ll &x) {x<0?putchar('-'),write(~(x-1)):write(x);putchar('\n');}
il int max(const int &a,const int &b){return a>b?a:b;}
il int min(const int &a,const int &b){return a<b?a:b;}
string s;
const int MAXM=11;
int a[MAXM];
ll f[MAXM];
ll sum[MAXM];
ll g[MAXM];
int n;
ll powt[MAXM];
int main(){
num[0]=1;
cin>>s;
n=s.length();
for(ri i=1;i<=n;++i){
a[i]=s[i-1]-'0';
sum[i]=sum[i-1]+a[i];
}
powt[0]=1;//2的k次方
for(ri i=1;i<=n;++i){
powt[i]=powt[i-1]<<1;
g[i]=g[i-1]*10+a[i]*powt[i-1];
f[i]=sum[i-1]+g[i];
sum[i]=sum[i-1]+f[i];
}
print(f[n]);
return 0;
}