#include <bits/stdc++.h>

using namespace std;

string duplo(string s)
{
    int n=s.length();
    string pom="";
    for(int i=0;i<n;i++)
    {
        if(i==0 || s[i]!=s[i-1])pom+=s[i];
    }
    return pom;
}

static int has[300];

bool uslov(string s)
{
    for(int i=0;i<300;i++)
        has[i]=0;
    int n=s.length();
    for(int i=0;i<n;i++)
        has[(int)s[i]]++;
    if(has['0']>1)
        return true;
    if(has['1']>1)
        return true;
    if(has['2']>1)
        return true;
    if(has['3']>1)
        return true;
    if(has['4']>1)
        return true;
    if(has['5']>1)
        return true;
    if(has['6']>1)
        return true;
    if(has['7']>1)
        return true;
    if(has['8']>1)
        return true;
    if(has['9']>1)
        return true;
    return false;
}

int main()
{
    string s;
    cin>>s;
    s=duplo(s);
    int n=s.length();
    for(int i=0;i<n;i++)
        has[s[i]]++;
    if(has['2']==0 && has['3']==0 && has['4']==0 && has['5']==0 && has['6']==0 && has['7']==0 && has['8']==0 && has['9']==0)
    {
        s=duplo(s);
        n=s.length();
        cout<<(n-1)/2;
        return 0;
    }
    n=s.length();
    int res=0;
    while(uslov(s))
    {
        for(int i=0;i<n;i++)
        {
            bool x=false;
            for(int j=i+1;j<n;j++)
            {
                if(s[i]==s[j])
                {
                    s[j]=s[j-1];
                    res++;
                    x=true;
                    break;
                }
            }
            if(x)break;
        }
        s=duplo(s);
    }
    cout<<res;
    return 0;
}