#include <bits/stdc++.h>
#include <iostream>
using namespace std;
// fnc2 追加 前のは無駄が多すぎた 9/3 17:20
// 依然として低い高さ制限(10)に甘えている
int fnc2(const string s){
int n=s.size();
vector<int> va, vb(1,0);
for(int i=0; i< n-1; i++){
if(s[i]<s[i+1]){
for(int j=s[i];j<s[i+1];j++) va.push_back(j-'0');
}else if(s[i]>s[i+1]){
for(int j=s[i];j>s[i+1];j--) va.push_back(j-'0');
}
}
for(;;){
int cr=va.back();
vb.push_back(cr);
if(cr==10) break;
va.pop_back();
}
//もろ2次元BFS でよかった?
const int dy[]={1,1,-1,-1}, dx[]={1,-1,1,-1}; //X形で4方向
const int gy = va.size(), gx = vb.size();
vector<vector<int> > d(gy, vector<int>(gx, 9999999));
queue< pair<int,int> > que;
que.push(make_pair(0,0)); d[0][0]=0;
while(!que.empty()){
int cy,cx; tie(cy,cx) = que.front();
que.pop();
for(int i=0; i<4; i++){
int ny=cy+dy[i], nx=cx+dx[i];
if(ny<0 || ny>=gy || nx<0 || nx>=gx) continue;
if(va[ny] != vb[nx]) continue;
if(d[ny][nx] > d[cy][cx] + 1){
que.push( make_pair(ny, nx) );
d[ny][nx] = d[cy][cx] + 1;
if(ny==gy-1 && nx==gx-1){
return d[ny][nx];
}
}
}
}
return -1;
}
int fnc(const string s){
int n=s.size();
vector<int> va, vb={0};
for(int i=0; i< n-1; i++){
if(s[i]<s[i+1]){
for(int j=s[i];j<s[i+1];j++) va.push_back(j-'0');
}else if(s[i]>s[i+1]){
for(int j=s[i];j>=s[i+1]+1;j--) va.push_back(j-'0');
}
}
while(1){
int cr=va.back();
vb.push_back(cr);
if(cr==10) break;
va.pop_back();
}
const int na=va.size(), nb=vb.size(), INF = 1<<28;
vector<vector<int>> cp(na+2, vector<int>(nb+2, INF));
cp[0][0] =0;
for(int _g ; _g<1e6; _g++){
vector<vector<int>> np(na+2, vector<int>(nb+2, INF));
for(int j=0;j<na;j++) for(int k=0;k<nb;k++) if(cp[j][k] < INF){
int c1=cp[j][k] + 1;
//np[j][k] = min( cp[j][k], np[j][k]);
//進める方向に進んでみよう
if(j+1<na && k+1<nb && va[j+1] == vb[k+1])
np[j+1][k+1] = min(np[j+1][k+1], c1);
if(k>0 && j+1<na && va[j+1] == vb[k-1])
np[j+1][k-1] = min(np[j+1][k-1],c1);
if(k>0 && j>0 && va[j-1]==vb[k-1])
np[j-1][k-1] = min( np[j-1][k-1],c1);
if(j>0 && k+1<nb && va[j-1] == vb[k+1])
np[j-1][k+1] = min(np[j-1][k+1], c1);
}
swap(cp, np);
if(cp[na-1][nb-1] < INF) break; //最初が最小値だと思う
}
return cp[na-1][nb-1];
}
int main()
{
string s;
while(cin >>s){
//cout << s << " ---> " << fnc(s) <<endl;
cout << s << " --> " << fnc2(s) <<endl;
}
return 0;
}
/*
"073:0" -> 18
"07362:450" -> 36
"06464:36470" -> 42
"0827171:28480" -> 66
"0737491:28180" -> 146
"05374734372747484:184618186912120" -> ?
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gZm5jMiDov73liqAg5YmN44Gu44Gv54Sh6aeE44GM5aSa44GZ44GO44GfICA5LzMgMTc6MjAgCi8vIOS+neeEtuOBqOOBl+OBpuS9juOBhOmrmOOBleWItumZkCgxMCnjgavnlJjjgYjjgabjgYTjgosKaW50IGZuYzIoY29uc3Qgc3RyaW5nIHMpewoJaW50IG49cy5zaXplKCk7Cgl2ZWN0b3I8aW50PiB2YSwgdmIoMSwwKTsKCWZvcihpbnQgaT0wOyBpPCBuLTE7IGkrKyl7CgkJaWYoc1tpXTxzW2krMV0pewoJCQlmb3IoaW50IGo9c1tpXTtqPHNbaSsxXTtqKyspIHZhLnB1c2hfYmFjayhqLScwJyk7CgkJfWVsc2UgaWYoc1tpXT5zW2krMV0pewoJCQlmb3IoaW50IGo9c1tpXTtqPnNbaSsxXTtqLS0pIHZhLnB1c2hfYmFjayhqLScwJyk7CgkJfQoJfQoJZm9yKDs7KXsKCQlpbnQgY3I9dmEuYmFjaygpOwoJCXZiLnB1c2hfYmFjayhjcik7CgkJaWYoY3I9PTEwKSBicmVhazsKCQl2YS5wb3BfYmFjaygpOwoJfQoJLy/jgoLjgo0y5qyh5YWDQkZTIOOBp+OCiOOBi+OBo+OBnz8KCWNvbnN0IGludCBkeVtdPXsxLDEsLTEsLTF9LCBkeFtdPXsxLC0xLDEsLTF9OyAgLy9Y5b2i44GnNOaWueWQkQoJY29uc3QgaW50IGd5ID0gdmEuc2l6ZSgpLCBneCA9IHZiLnNpemUoKTsKCXZlY3Rvcjx2ZWN0b3I8aW50PiA+IGQoZ3ksIHZlY3RvcjxpbnQ+KGd4LCA5OTk5OTk5KSk7CglxdWV1ZTwgcGFpcjxpbnQsaW50PiA+IHF1ZTsKCXF1ZS5wdXNoKG1ha2VfcGFpcigwLDApKTsgZFswXVswXT0wOwoJd2hpbGUoIXF1ZS5lbXB0eSgpKXsKCQlpbnQgY3ksY3g7IHRpZShjeSxjeCkgPSBxdWUuZnJvbnQoKTsKCQlxdWUucG9wKCk7CgkJZm9yKGludCBpPTA7IGk8NDsgaSsrKXsKCQkJaW50IG55PWN5K2R5W2ldLCBueD1jeCtkeFtpXTsKCQkJaWYobnk8MCB8fCBueT49Z3kgfHwgbng8MCB8fCBueD49Z3gpIGNvbnRpbnVlOwoJCQlpZih2YVtueV0gIT0gdmJbbnhdKSBjb250aW51ZTsKCQkJaWYoZFtueV1bbnhdID4gZFtjeV1bY3hdICsgMSl7CgkJCQlxdWUucHVzaCggbWFrZV9wYWlyKG55LCBueCkgKTsKCQkJCWRbbnldW254XSA9IGRbY3ldW2N4XSArIDE7CgkJCQlpZihueT09Z3ktMSAmJiBueD09Z3gtMSl7CgkJCQkJcmV0dXJuIGRbbnldW254XTsKCQkJCX0KCQkJfQoJCX0KCX0KCXJldHVybiAtMTsKfQoKaW50IGZuYyhjb25zdCBzdHJpbmcgcyl7CglpbnQgbj1zLnNpemUoKTsKCXZlY3RvcjxpbnQ+IHZhLCB2Yj17MH07Cglmb3IoaW50IGk9MDsgaTwgbi0xOyBpKyspewoJCWlmKHNbaV08c1tpKzFdKXsKCQkJZm9yKGludCBqPXNbaV07ajxzW2krMV07aisrKSB2YS5wdXNoX2JhY2soai0nMCcpOwoJCX1lbHNlIGlmKHNbaV0+c1tpKzFdKXsKCQkJZm9yKGludCBqPXNbaV07aj49c1tpKzFdKzE7ai0tKSB2YS5wdXNoX2JhY2soai0nMCcpOwoJCX0KCX0KCXdoaWxlKDEpewoJCWludCBjcj12YS5iYWNrKCk7CgkJdmIucHVzaF9iYWNrKGNyKTsKCQlpZihjcj09MTApIGJyZWFrOwoJCXZhLnBvcF9iYWNrKCk7Cgl9Cgljb25zdCBpbnQgbmE9dmEuc2l6ZSgpLCAgbmI9dmIuc2l6ZSgpLCBJTkYgPSAxPDwyODsKCXZlY3Rvcjx2ZWN0b3I8aW50Pj4gY3AobmErMiwgdmVjdG9yPGludD4obmIrMiwgSU5GKSk7CgljcFswXVswXSA9MDsKCWZvcihpbnQgX2cgOyBfZzwxZTY7IF9nKyspewoJCXZlY3Rvcjx2ZWN0b3I8aW50Pj4gbnAobmErMiwgdmVjdG9yPGludD4obmIrMiwgSU5GKSk7CgkJZm9yKGludCBqPTA7ajxuYTtqKyspIGZvcihpbnQgaz0wO2s8bmI7aysrKSBpZihjcFtqXVtrXSA8IElORil7CgkJCWludCBjMT1jcFtqXVtrXSArIDE7CgkJCS8vbnBbal1ba10gPSBtaW4oIGNwW2pdW2tdLCBucFtqXVtrXSk7CgkJCS8v6YCy44KB44KL5pa55ZCR44Gr6YCy44KT44Gn44G/44KI44GGCgkJCWlmKGorMTxuYSAmJiBrKzE8bmIgJiYgdmFbaisxXSA9PSB2YltrKzFdKQoJCQkJbnBbaisxXVtrKzFdID0gbWluKG5wW2orMV1baysxXSwgYzEpOwoJCQlpZihrPjAgJiYgaisxPG5hICYmIHZhW2orMV0gPT0gdmJbay0xXSkKCQkJCW5wW2orMV1bay0xXSA9IG1pbihucFtqKzFdW2stMV0sYzEpOwoJCQlpZihrPjAgJiYgaj4wICYmICB2YVtqLTFdPT12YltrLTFdKQoJCQkJbnBbai0xXVtrLTFdID0gbWluKCBucFtqLTFdW2stMV0sYzEpOwoJCQlpZihqPjAgJiYgaysxPG5iICYmIHZhW2otMV0gPT0gdmJbaysxXSkKCQkJCW5wW2otMV1baysxXSA9IG1pbihucFtqLTFdW2srMV0sIGMxKTsKCQl9CgkJc3dhcChjcCwgbnApOwoJCWlmKGNwW25hLTFdW25iLTFdIDwgSU5GKSBicmVhazsgLy/mnIDliJ3jgYzmnIDlsI/lgKTjgaDjgajmgJ3jgYYKCX0KCXJldHVybiBjcFtuYS0xXVtuYi0xXTsKfQppbnQgbWFpbigpCnsKCXN0cmluZyBzOyAKCQoJd2hpbGUoY2luID4+cyl7CgkJLy9jb3V0IDw8IHMgPDwgIiAtLS0+ICIgPDwgZm5jKHMpIDw8ZW5kbDsKCQljb3V0IDw8IHMgPDwgIiAgLS0+ICIgPDwgZm5jMihzKSA8PGVuZGw7Cgl9CglyZXR1cm4gMDsKfQovKgoiMDczOjAiIC0+IDE4CiIwNzM2Mjo0NTAiIC0+IDM2CiIwNjQ2NDozNjQ3MCIgLT4gNDIKIjA4MjcxNzE6Mjg0ODAiIC0+IDY2CiIwNzM3NDkxOjI4MTgwIiAtPiAxNDYKIjA1Mzc0NzM0MzcyNzQ3NDg0OjE4NDYxODE4NjkxMjEyMCIgLT4gPwoqLwo=