//...START BY DOING WHAT IS NECESSARY, THEN WHAT IS POSSIBLE AND SUDDENLY YOU ARE DOING THE IMPOSSIBLE...
#include <bits/stdc++.h>
using namespace std;typedef long long ll;
#define FAST_FURIER ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define pb push_back
#define ppb pop_back
#define mk make_pair
#define sorta(v) sort(v.begin(), v.end())
#define sortd(v) sort(v.begin(), v.end(), comp)
#define rep(i,a,N) for(ll i=a;i<N;i++)
#define rrep(i,a,N) for(ll i=a;i>N;i--)
#define print(v) for(ll ite=0;ite<v.size();ite++){cout<<v[ite]<<' ';}cout<<endl;
#define M 1000000007
bool comp(ll x,ll y)
{
return x > y;
}
/*..............................code starts here........................*/
// C is first won in M
vector<int> adj[10];
vector<int> visited(100005,false);
vector<int> dist(100005,0);
int n;
string s;
int bfs() {
queue<pair<int,int> > q;
q.push({0,0});
dist[0] = 0;
visited[0] = true;
while(!q.empty()) {
int index = q.front().first, step = q.front().second;
// cout << "index " << index << endl;
q.pop();
if(index == n-1){
break;
}
char no = s[index];
vector<int> v = adj[no-'0'];
rep(i,0,v.size()) {
if(visited[v[i]]) continue;
visited[v[i]] = true;
dist[v[i]] = step + 1;
q.push({v[i], dist[v[i]]});
}
rep(i,0,v.size()) {
if(v[i]-1>=0 and !visited[v[i]-1]){
visited[v[i]-1] = true;
dist[v[i]-1] = dist[v[i]] + 1;
q.push({v[i]-1,dist[v[i]-1]});
}
if(v[i]+1 <n and !visited[v[i]+1]){
visited[v[i]+1] = true;
dist[v[i]+1] = dist[v[i]] + 1;
q.push({v[i]+1, dist[v[i]+1]});
}
}
}
return dist[n-1];
}
void solve(){
cin >> s;
n = s.length();
rep(i,0,n){
adj[s[i]-'0'].pb(i);
}
cout << bfs() << endl;
}
int main() {
FAST_FURIER;
int tt=1;
// cin >> tt;
while(tt--){
solve();
}
}
// g++ -std=c++17
Ly8uLi5TVEFSVCBCWSBET0lORyBXSEFUIElTIE5FQ0VTU0FSWSwgVEhFTiBXSEFUIElTIFBPU1NJQkxFIEFORCBTVURERU5MWSBZT1UgQVJFIERPSU5HIFRIRSBJTVBPU1NJQkxFLi4uIAojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDt0eXBlZGVmIGxvbmcgbG9uZyBsbDsKI2RlZmluZSBGQVNUX0ZVUklFUiBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcHBiIHBvcF9iYWNrCiNkZWZpbmUgbWsgbWFrZV9wYWlyCiNkZWZpbmUgc29ydGEodikgICAgICAgICAgICBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSkKI2RlZmluZSBzb3J0ZCh2KSAgICAgICAgICAgIHNvcnQodi5iZWdpbigpLCB2LmVuZCgpLCBjb21wKQojZGVmaW5lIHJlcChpLGEsTikgICAgICAgICAgZm9yKGxsIGk9YTtpPE47aSsrKQojZGVmaW5lIHJyZXAoaSxhLE4pICAgICAgICAgZm9yKGxsIGk9YTtpPk47aS0tKQojZGVmaW5lIHByaW50KHYpICAgICAgICAgICAgZm9yKGxsIGl0ZT0wO2l0ZTx2LnNpemUoKTtpdGUrKyl7Y291dDw8dltpdGVdPDwnICc7fWNvdXQ8PGVuZGw7CiNkZWZpbmUgTSAxMDAwMDAwMDA3CmJvb2wgY29tcChsbCB4LGxsIHkpCnsKICAgIHJldHVybiB4ID4geTsKfQogCi8qLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uY29kZSBzdGFydHMgaGVyZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiovCi8vIEMgaXMgZmlyc3Qgd29uIGluIE0KdmVjdG9yPGludD4gYWRqWzEwXTsKdmVjdG9yPGludD4gdmlzaXRlZCgxMDAwMDUsZmFsc2UpOwp2ZWN0b3I8aW50PiBkaXN0KDEwMDAwNSwwKTsKaW50IG47CnN0cmluZyBzOwppbnQgYmZzKCkgewogICAgcXVldWU8cGFpcjxpbnQsaW50PiA+IHE7CiAgICBxLnB1c2goezAsMH0pOwogICAgZGlzdFswXSA9IDA7CiAgICB2aXNpdGVkWzBdID0gdHJ1ZTsKICAgIHdoaWxlKCFxLmVtcHR5KCkpIHsKICAgICAgICBpbnQgaW5kZXggPSBxLmZyb250KCkuZmlyc3QsIHN0ZXAgPSBxLmZyb250KCkuc2Vjb25kOwogICAgICAgIC8vIGNvdXQgPDwgImluZGV4ICIgPDwgaW5kZXggPDwgZW5kbDsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGlmKGluZGV4ID09IG4tMSl7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjaGFyIG5vID0gc1tpbmRleF07CiAgICAgICAgdmVjdG9yPGludD4gdiA9IGFkaltuby0nMCddOwogICAgICAgIHJlcChpLDAsdi5zaXplKCkpIHsKICAgICAgICAgICAgaWYodmlzaXRlZFt2W2ldXSkgY29udGludWU7CiAgICAgICAgICAgIHZpc2l0ZWRbdltpXV0gPSB0cnVlOwogICAgICAgICAgICBkaXN0W3ZbaV1dID0gc3RlcCArIDE7CiAgICAgICAgICAgIHEucHVzaCh7dltpXSwgZGlzdFt2W2ldXX0pOwogICAgICAgIH0KICAgICAgICByZXAoaSwwLHYuc2l6ZSgpKSB7CiAgICAgICAgICAgIGlmKHZbaV0tMT49MCBhbmQgIXZpc2l0ZWRbdltpXS0xXSl7CiAgICAgICAgICAgICAgICB2aXNpdGVkW3ZbaV0tMV0gPSB0cnVlOwogICAgICAgICAgICAgICAgZGlzdFt2W2ldLTFdID0gZGlzdFt2W2ldXSArIDE7CiAgICAgICAgICAgICAgICBxLnB1c2goe3ZbaV0tMSxkaXN0W3ZbaV0tMV19KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZih2W2ldKzEgPG4gYW5kICF2aXNpdGVkW3ZbaV0rMV0pewogICAgICAgICAgICAgICAgdmlzaXRlZFt2W2ldKzFdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGRpc3RbdltpXSsxXSA9IGRpc3RbdltpXV0gKyAxOwogICAgICAgICAgICAgICAgcS5wdXNoKHt2W2ldKzEsIGRpc3RbdltpXSsxXX0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRpc3Rbbi0xXTsKfQp2b2lkIHNvbHZlKCl7CiAgICBjaW4gPj4gczsKICAgIG4gPSBzLmxlbmd0aCgpOwogICAgcmVwKGksMCxuKXsKICAgICAgICBhZGpbc1tpXS0nMCddLnBiKGkpOwogICAgfQogICAgY291dCA8PCBiZnMoKSA8PCBlbmRsOwp9CmludCBtYWluKCkgewogICAgRkFTVF9GVVJJRVI7CiAgICBpbnQgdHQ9MTsKICAgIC8vIGNpbiA+PiB0dDsKICAgIHdoaWxlKHR0LS0pewogICAgICAgIHNvbHZlKCk7CiAgICAKICAgIH0KfQogCiAKIAogCi8vIGcrKyAtc3RkPWMrKzE3