
def I(): return int(input())
def MI(): return map(int, input().split())
def LI(): return list(map(int, input().split()))

def main():
    mod=10**9+7
    S="00"+input()
    S=S[::-1]
    N=len(S)-1
    
    def calc(x,nxt):
        # 今見てる数字,次の桁の数字,を受けて
        # 今使う,繰り上がり，を返す

        if x<=4:
            return x,0
        elif x>=6:
            return 10-x,1
        else:
            # 次が5なら，そのあと5以上ががくればお得，そうでなくとも損しない
            if nxt<5:
                return 5,0
            else:
                return 5,1
    
    kuri=0
    ans=0
    for i in range(N):
        now=int(S[i])
        nxt=int(S[i+1])
        now+=kuri
        temp,kuri = calc(now,nxt)
        
        ans+=temp
        
    print(ans)
        

main() def I(): return int(input()) I def MI(): return map(int, input().split()) MI def LI(): return list(map(int, input().split())) LI def main():
    mod=10**9+7
    S="00"+input()
    S=S[::-1]
    N=len(S)-1
    
    def calc(x,nxt):
        # 今見てる数字,次の桁の数字,を受けて
        # 今使う,繰り上がり，を返す

        if x<=4:
            return x,0
        elif x>=6:
            return 10-x,1
        else:
            # 次が5なら，そのあと5以上ががくればお得，そうでなくとも損しない
            if nxt<5:
                return 5,0
            else:
                return 5,1
    
    kuri=0
    ans=0
    for i in range(N):
        now=int(S[i])
        nxt=int(S[i+1])
        now+=kuri
        temp,kuri = calc(now,nxt)
        
        ans+=temp
        
    print(ans)
         main mod=10**9+7 mod 10**9+7 10**9 10 9 7 S="00"+input() S "00"+input() "00" input() input S=S[::-1] S S[::-1] S ::-1 -1 N=len(S)-1 N len(S)-1 len(S) len S 1 def calc(x,nxt):
        # 今見てる数字,次の桁の数字,を受けて
        # 今使う,繰り上がり，を返す

        if x<=4:
            return x,0
        elif x>=6:
            return 10-x,1
        else:
            # 次が5なら，そのあと5以上ががくればお得，そうでなくとも損しない
            if nxt<5:
                return 5,0
            else:
                return 5,1
    
     calc if x<=4:
            return x,0
        elif x>=6:
            return 10-x,1
        else:
            # 次が5なら，そのあと5以上ががくればお得，そうでなくとも損しない
            if nxt<5:
                return 5,0
            else:
                return 5,1
    
     x<=4 x 4 return x,0 return x,0 x 0 elif x>=6:
            return 10-x,1
         x>=6 x 6 return 10-x,1 return 10-x,1 10-x 10 x 1 if nxt<5:
                return 5,0
            else:
                return 5,1
    
     nxt<5 nxt 5 return 5,0 return 5,0 5 0 return 5,1 return 5,1 5 1 x x nxt nxt kuri=0 kuri 0 ans=0 ans 0 for i in range(N):
        now=int(S[i])
        nxt=int(S[i+1])
        now+=kuri
        temp,kuri = calc(now,nxt)
        
        ans+=temp
        
     i range(N) range N now=int(S[i]) now int(S[i]) int S[i] S i nxt=int(S[i+1]) nxt int(S[i+1]) int S[i+1] S i+1 i 1 now+=kuri now kuri temp,kuri = calc(now,nxt) temp calc(now,nxt) calc now nxt kuri ans+=temp ans temp print(ans) print ans main() main def MI(): return map(int, input().split()) def MI(): return map(int, input().split()) MI def LI(): return list(map(int, input().split())) def LI(): return list(map(int, input().split())) LI def main():
    mod=10**9+7
    S="00"+input()
    S=S[::-1]
    N=len(S)-1
    
    def calc(x,nxt):
        # 今見てる数字,次の桁の数字,を受けて
        # 今使う,繰り上がり，を返す

        if x<=4:
            return x,0
        elif x>=6:
            return 10-x,1
        else:
            # 次が5なら，そのあと5以上ががくればお得，そうでなくとも損しない
            if nxt<5:
                return 5,0
            else:
                return 5,1
    
    kuri=0
    ans=0
    for i in range(N):
        now=int(S[i])
        nxt=int(S[i+1])
        now+=kuri
        temp,kuri = calc(now,nxt)
        
        ans+=temp
        
    print(ans)
         def main():
    mod=10**9+7
    S="00"+input()
    S=S[::-1]
    N=len(S)-1
    
    def calc(x,nxt):
        # 今見てる数字,次の桁の数字,を受けて
        # 今使う,繰り上がり，を返す

        if x<=4:
            return x,0
        elif x>=6:
            return 10-x,1
        else:
            # 次が5なら，そのあと5以上ががくればお得，そうでなくとも損しない
            if nxt<5:
                return 5,0
            else:
                return 5,1
    
    kuri=0
    ans=0
    for i in range(N):
        now=int(S[i])
        nxt=int(S[i+1])
        now+=kuri
        temp,kuri = calc(now,nxt)
        
        ans+=temp
        
    print(ans)
         main def I(): return int(input()) def I(): return int(input()) I

def I(): return int(input())
def MI(): return map(int, input().split())
def LI(): return list(map(int, input().split()))

def main():
    mod=10**9+7
    S="00"+input()
    S=S[::-1]
    N=len(S)-1
    
    def calc(x,nxt):
        # 今見てる数字,次の桁の数字,を受けて
        # 今使う,繰り上がり，を返す

        if x<=4:
            return x,0
        elif x>=6:
            return 10-x,1
        else:
            # 次が5なら，そのあと5以上ががくればお得，そうでなくとも損しない
            if nxt<5:
                return 5,0
            else:
                return 5,1
    
    kuri=0
    ans=0
    for i in range(N):
        now=int(S[i])
        nxt=int(S[i+1])
        now+=kuri
        temp,kuri = calc(now,nxt)
        
        ans+=temp
        
    print(ans)
        

main()
