package main
import (
"fmt"
)
const Y = 201
const offset = 100
func main() {
var s string
if _, err := fmt.Scan(&s); err != nil {
return
}
n := make([]int, 65)
for i := 0; i < len(s); i++ {
n[i] = int(s[len(s)-1-i] - '0')
}
var dp [Y][Y]int64
var next_dp [Y][Y]int64
for i := 0; i < Y; i++ {
for j := 0; j < Y; j++ {
dp[i][j] = 1e18
}
}
for y1 := 0; y1 < Y; y1++ {
dp[offset][y1] = 0
}
for i := 0; i < 63; i++ {
for j := 0; j < Y; j++ {
for k := 0; k < Y; k++ {
next_dp[j][k] = 1e18
}
}
for y_i := 0; y_i < Y; y_i++ {
for y_i1 := 0; y_i1 < Y; y_i1++ {
if dp[y_i][y_i1] >= 1e15 {
continue
}
xi := int64(n[i]) + int64(10*(y_i1-offset)) - int64(y_i-offset)
for y_i2 := 0; y_i2 < Y; y_i2++ {
xi1 := int64(n[i+1]) + int64(10*(y_i2-offset)) - int64(y_i1-offset)
diff := xi - xi1
if diff < 0 {
diff = -diff
}
cost := diff * int64(i+1)
if dp[y_i][y_i1]+cost < next_dp[y_i1][y_i2] {
next_dp[y_i1][y_i2] = dp[y_i][y_i1] + cost
}
}
}
}
for j := 0; j < Y; j++ {
for k := 0; k < Y; k++ {
dp[j][k] = next_dp[j][k]
}
}
}
fmt.Println(dp[offset][offset])
}