s = eval(input())

n = len(s)

all_sum = 0

#0から(2^n-1)-1までループ

for bit in range(1<<(n-1)):

    func = s[0]

    for i in range(n-1):

        if bit & (1<<i):

            func += "+"

        func += s[i+1]

    

    all_sum += sum(map(int, func.split('+')))

print(all_sum)

def dfs(i, f):

    if i == n-1: #もし枝が最後のけたに到達したら、という条件式

        return sum (list(map(int, f.split('+'))))

    

    #式fの末尾に'+'を追加する/追加しないをして次の数字を追加

    return dfs(i+1, f+s[i+1]) + dfs(i+1, f+'+'+s[i+1])

s = eval(input())

n = len(s)

print((dfs(0, s[0])))

s = eval(input())
n = len(s)
all_sum = 0
# 0から(2^n-1)-1までループ
for bit in range(1 << (n - 1)):
    func = s[0]
    for i in range(n - 1):
        if bit & (1 << i):
            func += "+"
        func += s[i + 1]
    all_sum += sum(map(int, func.split("+")))
print(all_sum)

def dfs(i, f):
    if i == n - 1:  # もし枝が最後のけたに到達したら、という条件式
        return sum(list(map(int, f.split("+"))))
    # 式fの末尾に'+'を追加する/追加しないをして次の数字を追加
    return dfs(i + 1, f + s[i + 1]) + dfs(i + 1, f + "+" + s[i + 1])


s = eval(input())
n = len(s)
print((dfs(0, s[0])))

+def dfs(i, f): +    if i == n - 1:  # もし枝が最後のけたに到達したら、という条件式 +        return sum(list(map(int, f.split("+")))) +    # 式fの末尾に'+'を追加する/追加しないをして次の数字を追加 +    return dfs(i + 1, f + s[i + 1]) + dfs(i + 1, f + "+" + s[i + 1]) + + -all_sum = 0 -# 0から(2^n-1)-1までループ -for bit in range(1 << (n - 1)): -    func = s[0] -    for i in range(n - 1): -        if bit & (1 << i): -            func += "+" -        func += s[i + 1] -    all_sum += sum(map(int, func.split("+"))) -print(all_sum) +print((dfs(0, s[0])))