// 蟻本: 例題 2-1-1　部分和問題 の類題
/*
 与えられたのが 1234 のときは
 1234,
 1 +234, 1 +2 +34, 1 +2 +3 +4,
 12 +34, 12 +3 +4,
 123 +4
 の合計が聞かれてる
 ↑を
 [1] 234, [1, 2] 34, [1, 2, 3] 4
 [12] 34, [12, 3] 4,
 [123] 4
 のように+で区切り終えたものを配列で管理し,
 まだ+で区切る余地のあるものを文字列で扱いました(ノ)>◡<(ヾ)ﾓﾁﾓﾁ
 */

func dfs(_ s: String) {
    if s.count==0 { return }    // ベースケース(・・？) (文字列が空("")なら終了)
    
    for i in 1..<s.count {
        let idx: String.Index = s.index(s.startIndex, offsetBy: i)  // +で区切る場所を指定
        seq.append(Int(s[..<idx])!) // +で区切り終わった部分を記憶
        res += seq.reduce(0, +) + Int(s[idx...])!   // 計算, .reduce(0, +)で配列の和を計算できる
        
        dfs(String(s[idx...]))  // 再帰呼び出し
        seq.removeLast()
    }
}

let S: String = readLine()!
var seq: [Int] = []
var res = Int(S)!

dfs(S)  // 再帰スタート٩(๑❛ᴗ❛๑)۶
print(res)  // (๑•ૅㅁ•๑)