S = eval(input())



def div_plus(i, s):

    if i == len(S):

        s_list = [int(i) for i in s.split("+")]

        return sum(s_list)

    

    pos = i - len(S)

    # プラスを挿入しない場合

    d1 = div_plus(i+1, s)

    

    # プラスを挿入する場合

    d2 = div_plus(i+1, s[:pos]+"+"+s[pos:])

    return d1 + d2



print((div_plus(1, S)))
S = eval(input())



def rec(n, s):

    if n == 1:

        ans = 0

        for i in s.split("+"):

            ans += int(i)

        return ans

    

    # 文字列の後ろからn番目に"+"を入れるか否か

    return rec(n-1, s) + rec(n-1, s[:-n+1]+"+"+s[-n+1:])



print((rec(len(S), S)))
S = eval(input())


def div_plus(i, s):
    if i == len(S):
        s_list = [int(i) for i in s.split("+")]
        return sum(s_list)
    pos = i - len(S)
    # プラスを挿入しない場合
    d1 = div_plus(i + 1, s)
    # プラスを挿入する場合
    d2 = div_plus(i + 1, s[:pos] + "+" + s[pos:])
    return d1 + d2


print((div_plus(1, S)))

S = eval(input())


def rec(n, s):
    if n == 1:
        ans = 0
        for i in s.split("+"):
            ans += int(i)
        return ans
    # 文字列の後ろからn番目に"+"を入れるか否か
    return rec(n - 1, s) + rec(n - 1, s[: -n + 1] + "+" + s[-n + 1 :])


print((rec(len(S), S)))

-def div_plus(i, s): -    if i == len(S): -        s_list = [int(i) for i in s.split("+")] -        return sum(s_list) -    pos = i - len(S) -    # プラスを挿入しない場合 -    d1 = div_plus(i + 1, s) -    # プラスを挿入する場合 -    d2 = div_plus(i + 1, s[:pos] + "+" + s[pos:]) -    return d1 + d2 +def rec(n, s): +    if n == 1: +        ans = 0 +        for i in s.split("+"): +            ans += int(i) +        return ans +    # 文字列の後ろからn番目に"+"を入れるか否か +    return rec(n - 1, s) + rec(n - 1, s[: -n + 1] + "+" + s[-n + 1 :]) -print((div_plus(1, S))) +print((rec(len(S), S)))