#include #include #include using namespace std; const vector Z = {0,1,2,3,2,1,2,3,3,2,1}; const vector C = {0,1,2,5,6,7}; const vector X = {0,1,2,1,2,3}; int solve_dp(string s) { int n = (int) s.size(); const int inf = 1e9; vector> dp(n, vector(2, inf)); int d0 = s[0] - '0'; dp[0][0] = Z[d0]; dp[0][1] = Z[d0+1]; for (int i = 1; i < n; i++) { for (int j = 0; j < 2; j++) { int d = s[i] - '0' + j; for (int k = 0; k < 6; k++) { if (d + C[k] >= 10) { dp[i][j] = min(dp[i][j], dp[i-1][1] + X[k] + Z[d + C[k] - 10]); } else { dp[i][j] = min(dp[i][j], dp[i-1][0] + X[k] + Z[d + C[k]]); } } } } return dp[n-1][0]; } int main() { string s; cin >> s; cout << solve_dp(s) << endl; return 0; }