from collections import deque
s = raw_input()
lst = [int(i) for i in s ]
n = len(s)
visited = [ 0 for i in xrange(n) ]
jumps = [10000 for i in xrange(n) ]
biglst = [[] for i in xrange(10)]
for i in xrange(n):
biglst[lst[i]].append(i)
jumps[0] = 0
queue = deque([0])
#print biglst
while(1):
elem = queue.popleft()
flag = 0
if(elem<len(s)-1):
if(visited[elem] == 0 and jumps[elem+1] > jumps[elem]+1):
jumps[elem+1] = jumps[elem] + 1
queue.append(elem+1)
if(elem>0):
if(visited[elem] == 0 and jumps[elem-1] > jumps[elem]+1):
jumps[elem-1] = jumps[elem] + 1
queue.append(elem-1)
#print biglst[lst[elem]]
if(len(biglst[lst[elem]]) > 1):
for i in biglst[lst[elem]]:
if(i != elem and visited[i] == 0 and jumps[i] > jumps[elem]+1):
jumps[i] = jumps[elem] + 1
queue.append(i)
visited[elem] = 1;
if(visited[len(s)-1] == 1):
break
#print lst
#print jumps
print jumps[len(s)-1]
ZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIApzID0gcmF3X2lucHV0KCkKIApsc3QgPSBbaW50KGkpIGZvciBpIGluIHMgXQpuID0gbGVuKHMpCnZpc2l0ZWQgPSBbIDAgZm9yIGkgaW4geHJhbmdlKG4pIF0KanVtcHMgPSBbMTAwMDAgZm9yIGkgaW4geHJhbmdlKG4pIF0KIApiaWdsc3QgPSBbW10gZm9yIGkgaW4geHJhbmdlKDEwKV0KIApmb3IgaSBpbiB4cmFuZ2Uobik6CiAgICBiaWdsc3RbbHN0W2ldXS5hcHBlbmQoaSkKIApqdW1wc1swXSA9IDAKIApxdWV1ZSA9IGRlcXVlKFswXSkKIAojcHJpbnQgYmlnbHN0CiAKd2hpbGUoMSk6CiAgICAKICAgIGVsZW0gPSBxdWV1ZS5wb3BsZWZ0KCkKICAgIGZsYWcgPSAwCiAKICAgIGlmKGVsZW08bGVuKHMpLTEpOgogICAgICAgIGlmKHZpc2l0ZWRbZWxlbV0gPT0gMCBhbmQganVtcHNbZWxlbSsxXSA+IGp1bXBzW2VsZW1dKzEpOgogICAgICAgICAgICBqdW1wc1tlbGVtKzFdID0ganVtcHNbZWxlbV0gKyAxCiAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChlbGVtKzEpCiAKICAgIGlmKGVsZW0+MCk6CiAgICAgICAgaWYodmlzaXRlZFtlbGVtXSA9PSAwIGFuZCBqdW1wc1tlbGVtLTFdID4ganVtcHNbZWxlbV0rMSk6CiAgICAgICAgICAgIGp1bXBzW2VsZW0tMV0gPSBqdW1wc1tlbGVtXSArIDEKICAgICAgICAgICAgcXVldWUuYXBwZW5kKGVsZW0tMSkKICAgICNwcmludCBiaWdsc3RbbHN0W2VsZW1dXQogICAgaWYobGVuKGJpZ2xzdFtsc3RbZWxlbV1dKSA+IDEpOgogICAgICAgIGZvciBpIGluIGJpZ2xzdFtsc3RbZWxlbV1dOiAgICAgICAgCiAgICAgICAgICAgIGlmKGkgIT0gZWxlbSBhbmQgdmlzaXRlZFtpXSA9PSAwIGFuZCBqdW1wc1tpXSA+IGp1bXBzW2VsZW1dKzEpOgogICAgICAgICAgICAgICAganVtcHNbaV0gPSBqdW1wc1tlbGVtXSArIDEKICAgICAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChpKQogCiAgICB2aXNpdGVkW2VsZW1dID0gMTsKICAgIGlmKHZpc2l0ZWRbbGVuKHMpLTFdID09IDEpOgogICAgICAgIGJyZWFrCiAKICAgICNwcmludCBsc3QKICAgICNwcmludCBqdW1wcwogCnByaW50IGp1bXBzW2xlbihzKS0xXSAg