n = list(input())
inf = 10**9
dp = [[inf for i in range(2)] for j in range(len(n) + 2)]
#dp[i][j] := 下からi桁目まで決めたときの、繰り下がりがjである。(true, false)
#ときの、最小紙幣数
n.reverse()
n += ['0']
#繰り下がりがない
dp[0][0] = 0
#配るDP
for i in range(len(n)):
    for j in range(2):
        x = int(n[i])
        #さっきの桁に繰り下がりをしている場合は、今回の数字が一つ減る。
        #んだけど、実際に払う数字は後で決めるから、今回は、引く側の数字を1大きく
        #することで、同じ操作を実現している
        x += j
        for a in range(10):
            #今回払う数字を決める
            if a >= x:
                #繰り下がりなし
                dp[i+1][0] = min(dp[i+1][0], dp[i][j] + 2 * a - x)
            else:
                #繰り下がりあり
                dp[i+1][1] = min(dp[i+1][1], dp[i][j] + 2 * a - x + 10)
print(min(dp[len(n)][0], dp[len(n)][1]))
 n = list(input()) n list(input()) list input() input inf = 10**9 inf 10**9 10 9 [inf for i in range(2)] for j in range(len(n) + 2) for j in range(len(n) + 2) j range(len(n) + 2) range len(n) + 2 len(n) len n 2 for j in range(len(n) + 2) [inf for i in range(2)] dp = [[inf for i in range(2)] for j in range(len(n) + 2)] dp [[inf for i in range(2)] for j in range(len(n) + 2)] n.reverse() n.reverse n reverse n += ['0'] n ['0'] '0' dp[0][0] = 0 dp[0][0] [0] dp 0 0 0 for i in range(len(n)):
    for j in range(2):
        x = int(n[i])
        #さっきの桁に繰り下がりをしている場合は、今回の数字が一つ減る。
        #んだけど、実際に払う数字は後で決めるから、今回は、引く側の数字を1大きく
        #することで、同じ操作を実現している
        x += j
        for a in range(10):
            #今回払う数字を決める
            if a >= x:
                #繰り下がりなし
                dp[i+1][0] = min(dp[i+1][0], dp[i][j] + 2 * a - x)
            else:
                #繰り下がりあり
                dp[i+1][1] = min(dp[i+1][1], dp[i][j] + 2 * a - x + 10) i range(len(n)) range len(n) len n for j in range(2):
        x = int(n[i])
        #さっきの桁に繰り下がりをしている場合は、今回の数字が一つ減る。
        #んだけど、実際に払う数字は後で決めるから、今回は、引く側の数字を1大きく
        #することで、同じ操作を実現している
        x += j
        for a in range(10):
            #今回払う数字を決める
            if a >= x:
                #繰り下がりなし
                dp[i+1][0] = min(dp[i+1][0], dp[i][j] + 2 * a - x)
            else:
                #繰り下がりあり
                dp[i+1][1] = min(dp[i+1][1], dp[i][j] + 2 * a - x + 10) j range(2) range 2 x = int(n[i]) x int(n[i]) int n[i] n i x += j x j for a in range(10):
            #今回払う数字を決める
            if a >= x:
                #繰り下がりなし
                dp[i+1][0] = min(dp[i+1][0], dp[i][j] + 2 * a - x)
            else:
                #繰り下がりあり
                dp[i+1][1] = min(dp[i+1][1], dp[i][j] + 2 * a - x + 10) a range(10) range 10 if a >= x:
                #繰り下がりなし
                dp[i+1][0] = min(dp[i+1][0], dp[i][j] + 2 * a - x)
            else:
                #繰り下がりあり
                dp[i+1][1] = min(dp[i+1][1], dp[i][j] + 2 * a - x + 10) a >= x a x dp[i+1][0] = min(dp[i+1][0], dp[i][j] + 2 * a - x) dp[i+1][0] [i+1] dp i+1 i 1 0 min(dp[i+1][0], dp[i][j] + 2 * a - x) min dp[i+1][0] [i+1] dp i+1 i 1 0 dp[i][j] + 2 * a - x dp[i][j] + 2 * a dp[i][j] [i] dp i j 2 * a 2 a x dp[i+1][1] = min(dp[i+1][1], dp[i][j] + 2 * a - x + 10) dp[i+1][1] [i+1] dp i+1 i 1 1 min(dp[i+1][1], dp[i][j] + 2 * a - x + 10) min dp[i+1][1] [i+1] dp i+1 i 1 1 dp[i][j] + 2 * a - x + 10 dp[i][j] + 2 * a - x dp[i][j] + 2 * a dp[i][j] [i] dp i j 2 * a 2 a x 10 print(min(dp[len(n)][0], dp[len(n)][1])) print min(dp[len(n)][0], dp[len(n)][1]) min dp[len(n)][0] [len(n)] dp len(n) len n 0 dp[len(n)][1] [len(n)] dp len(n) len n 1 n = list(input()) list(input()) n x = int(n[i]) int(n[i]) x x += j j x inf = 10**9 10**9 inf n += ['0'] ['0'] n dp = [[inf for i in range(2)] for j in range(len(n) + 2)] [[inf for i in range(2)] for j in range(len(n) + 2)] dp
n = list(input())
inf = 10**9
dp = [[inf for i in range(2)] for j in range(len(n) + 2)]
#dp[i][j] := 下からi桁目まで決めたときの、繰り下がりがjである。(true, false)
#ときの、最小紙幣数
n.reverse()
n += ['0']
#繰り下がりがない
dp[0][0] = 0
#配るDP
for i in range(len(n)):
    for j in range(2):
        x = int(n[i])
        #さっきの桁に繰り下がりをしている場合は、今回の数字が一つ減る。
        #んだけど、実際に払う数字は後で決めるから、今回は、引く側の数字を1大きく
        #することで、同じ操作を実現している
        x += j
        for a in range(10):
            #今回払う数字を決める
            if a >= x:
                #繰り下がりなし
                dp[i+1][0] = min(dp[i+1][0], dp[i][j] + 2 * a - x)
            else:
                #繰り下がりあり
                dp[i+1][1] = min(dp[i+1][1], dp[i][j] + 2 * a - x + 10)
print(min(dp[len(n)][0], dp[len(n)][1]))

