#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
int mat[10][10];
map<int,int>m;
void update(int a){
//cout<<"yes"<<a;
int i;
for(i=0;i<10;i++)
{
if(m[i]>mat[i][a]+m[a]+1)
{
m[i]=1+mat[i][a]+m[a];
update(i);
}
}
}
int main(){
for(int o=0;o<10;o++)
for(int p=0;p<10;p++)
mat[o][p]=30;
char carr[100005];
scanf("%s",carr);
char ch;
ch=carr[0];
int i;
for(int i=0;i<=9;i++)
m[i]=40;
int current=0;
int a=ch-48;
m[a]=1;
ch=carr[1];
i=0;
int arr[100000];
arr[i]=a;
i++;
int ind=1;
while(ch!='\0'){
int a=ch-48;
if(i>2)
if(arr[i-1]==a&&arr[i-2]==a)
goto A;
else
arr[i]=a;
else
arr[i]=a;
current++;
if(m[a]<=current){
current=m[a];
update(a);
}
else
m[a]=current+1;
for(int j=1;j<40&&i-j>-1;j++)
{
if(mat[arr[i-j]][a]>j)
{
mat[arr[i-j]][a]=j;
mat[a][arr[i-j]]=j;
}
if(m[arr[i-j]]>(1+current+j))
{
m[arr[i-j]]=(current+j+1);
// cout<<"A"<<a<<"IJ"<<i-j;
update(arr[i-j]);
}
}i++;
A:;
ind++;
ch=carr[ind];
}
printf("%d\n",current);
cin.get();
}
//01982872437567701452
//112233445566778899
//11223344556677-
//988991211223364779911223365482223489-3
//1155334411335533774477226688-11
//99887766446688776655334455697755887554-5
//099887766554433223300885577-5
//016273849567165299885-5
//
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbWF0WzEwXVsxMF07Cm1hcDxpbnQsaW50Pm07CnZvaWQgdXBkYXRlKGludCBhKXsKICAgICAvL2NvdXQ8PCJ5ZXMiPDxhOwogICAgIGludCBpOwogICAgIGZvcihpPTA7aTwxMDtpKyspCiAgICAgewogICAgICAgICAgICAgICAgICAgICAgaWYobVtpXT5tYXRbaV1bYV0rbVthXSsxKQogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtW2ldPTErbWF0W2ldW2FdK21bYV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZShpKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICB9CiAgICAgfQppbnQgbWFpbigpewogICAgZm9yKGludCBvPTA7bzwxMDtvKyspCiAgICBmb3IoaW50IHA9MDtwPDEwO3ArKykKICAgIG1hdFtvXVtwXT0zMDsKICAgIGNoYXIgY2FyclsxMDAwMDVdOwogICAgc2NhbmYoIiVzIixjYXJyKTsKICAgIGNoYXIgY2g7CiAgICBjaD1jYXJyWzBdOwogICAgaW50IGk7CiAgICBmb3IoaW50IGk9MDtpPD05O2krKykKICAgIG1baV09NDA7CiAgICBpbnQgY3VycmVudD0wOwogICAgaW50IGE9Y2gtNDg7CiAgICBtW2FdPTE7CiAgICBjaD1jYXJyWzFdOwogICAgaT0wOwogICAgaW50IGFyclsxMDAwMDBdOwogICAgYXJyW2ldPWE7CiAgICBpKys7CiAgICBpbnQgaW5kPTE7CiAgICB3aGlsZShjaCE9J1wwJyl7CiAgICAgICAgICAgICAgICAgICAgaW50IGE9Y2gtNDg7CiAgICAgICAgICAgICAgICAgICAgaWYoaT4yKQogICAgICAgICAgICAgICAgICAgIGlmKGFycltpLTFdPT1hJiZhcnJbaS0yXT09YSkKICAgICAgICAgICAgICAgICAgICBnb3RvIEE7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGFycltpXT1hOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBhcnJbaV09YTsKICAgICAgICAgICAgICAgICAgICBjdXJyZW50Kys7CiAgICAgICAgICAgICAgICAgICAgaWYobVthXTw9Y3VycmVudCl7CiAgICAgICAgICAgICAgICAgICAgY3VycmVudD1tW2FdOwogICAgICAgICAgICAgICAgICAgIHVwZGF0ZShhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIG1bYV09Y3VycmVudCsxOwogICAgICAgICAgICAgICAgICAgIGZvcihpbnQgaj0xO2o8NDAmJmktaj4tMTtqKyspCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWF0W2FycltpLWpdXVthXT5qKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFthcnJbaS1qXV1bYV09ajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRbYV1bYXJyW2ktal1dPWo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtW2FycltpLWpdXT4oMStjdXJyZW50K2opKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtW2FycltpLWpdXT0oY3VycmVudCtqKzEpOwogICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdXQ8PCJBIjw8YTw8IklKIjw8aS1qOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUoYXJyW2ktal0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH1pKys7CiAgICAgICAgICAgICAgICAgICAgQTo7CiAgICAgICAgICAgICAgICAgICAgaW5kKys7CiAgICAgICAgICAgICAgICAgICAgY2g9Y2FycltpbmRdOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0KICAgIHByaW50ZigiJWRcbiIsY3VycmVudCk7CiAgICAKICAgIGNpbi5nZXQoKTsKICAgIAogICAgfQovLzAxOTgyODcyNDM3NTY3NzAxNDUyCi8vMTEyMjMzNDQ1NTY2Nzc4ODk5Ci8vMTEyMjMzNDQ1NTY2NzctCi8vOTg4OTkxMjExMjIzMzY0Nzc5OTExMjIzMzY1NDgyMjIzNDg5LTMKLy8xMTU1MzM0NDExMzM1NTMzNzc0NDc3MjI2Njg4LTExCi8vOTk4ODc3NjY0NDY2ODg3NzY2NTUzMzQ0NTU2OTc3NTU4ODc1NTQtNQovLzA5OTg4Nzc2NjU1NDQzMzIyMzMwMDg4NTU3Ny01Ci8vMDE2MjczODQ5NTY3MTY1Mjk5ODg1LTUKLy8K