S = eval(input())



def DP(x , i):

    #print("x:i:",x,i)

    ans = 0

    # iがSの長さになっていれば、評価する

    if i == len(S):

        # +が入っていればevalで評価する必要がある

        #print("評価")

        if '+' in x:

            return eval(x)

        else:

            return int(x)

    else:

        # i番目の数字の前に+を挟まない場合

        ans += DP(x + S[i] , i+1)

        if i > 0:

            # i番目の数字の前に+を挟む場合

            ans += DP(x + '+' + S[i], i+1)

        return ans



print((DP('',0)))
s = eval(input())

n = int(s)

r = 0

# bitの２進数表記で+を入れる位置を総当たりする

for bit in range(2**(len(s)-1)):

    # eは先頭文字

    e = s[0]

    # +が入る位置が、右からi桁目（0<= i <= Sの長さ－1）のとき

    for i in range(len(s)-1):

        if ((bit>>i)&1) == 1:

            # bitの２進数表記で右からi桁目が1のとき

            # '+'を入れる

            e += '+'

        # 次の文字（左からi番目）を入れる

        e += s[i+1]

    # +を入れた文字列を+で分割して整数に変換し、加算する

    r += sum(map(int, e.split('+')))

print(r)
S = eval(input())


def DP(x, i):
    # print("x:i:",x,i)
    ans = 0
    # iがSの長さになっていれば、評価する
    if i == len(S):
        # +が入っていればevalで評価する必要がある
        # print("評価")
        if "+" in x:
            return eval(x)
        else:
            return int(x)
    else:
        # i番目の数字の前に+を挟まない場合
        ans += DP(x + S[i], i + 1)
        if i > 0:
            # i番目の数字の前に+を挟む場合
            ans += DP(x + "+" + S[i], i + 1)
        return ans


print((DP("", 0)))

s = eval(input())
n = int(s)
r = 0
# bitの２進数表記で+を入れる位置を総当たりする
for bit in range(2 ** (len(s) - 1)):
    # eは先頭文字
    e = s[0]
    # +が入る位置が、右からi桁目（0<= i <= Sの長さ－1）のとき
    for i in range(len(s) - 1):
        if ((bit >> i) & 1) == 1:
            # bitの２進数表記で右からi桁目が1のとき
            # '+'を入れる
            e += "+"
        # 次の文字（左からi番目）を入れる
        e += s[i + 1]
    # +を入れた文字列を+で分割して整数に変換し、加算する
    r += sum(map(int, e.split("+")))
print(r)

-S = eval(input()) - - -def DP(x, i): -    # print("x:i:",x,i) -    ans = 0 -    # iがSの長さになっていれば、評価する -    if i == len(S): -        # +が入っていればevalで評価する必要がある -        # print("評価") -        if "+" in x: -            return eval(x) -        else: -            return int(x) -    else: -        # i番目の数字の前に+を挟まない場合 -        ans += DP(x + S[i], i + 1) -        if i > 0: -            # i番目の数字の前に+を挟む場合 -            ans += DP(x + "+" + S[i], i + 1) -        return ans - - -print((DP("", 0))) +s = eval(input()) +n = int(s) +r = 0 +# bitの２進数表記で+を入れる位置を総当たりする +for bit in range(2 ** (len(s) - 1)): +    # eは先頭文字 +    e = s[0] +    # +が入る位置が、右からi桁目（0<= i <= Sの長さ－1）のとき +    for i in range(len(s) - 1): +        if ((bit >> i) & 1) == 1: +            # bitの２進数表記で右からi桁目が1のとき +            # '+'を入れる +            e += "+" +        # 次の文字（左からi番目）を入れる +        e += s[i + 1] +    # +を入れた文字列を+で分割して整数に変換し、加算する +    r += sum(map(int, e.split("+"))) +print(r)