#include <bits/stdc++.h>
using namespace std;
void ckmax(int&a,int b){a=max(a,b);}
void ckmin(int&a,int b){a=min(a,b);}
const int N=100050;
const int inf=1e8;
char s[N];
int dp[N][10][10][2];
int main(){
    scanf("%s",&s);
    int n=strlen(s);
    bool ok=1;
    for(int i=0;i<n;i++)if(s[i]!='0'&&s[i]!='1')ok=0;
    if(ok){
        int ans=inf,sum=0;
        for(int i=0;i<n;i++)if(s[i]=='1')sum+=1;
        ckmin(ans,sum);ckmin(ans,n-sum);
        int tmp=0;
        for(int i=0;i<n;i++){
            tmp+=s[i]=='1';
            int szl=i+1,szr=n-i-1;
            ckmin(ans,szl-tmp+(sum-tmp));
            ckmin(ans,tmp+szr-(sum-tmp));
            //printf("%i %i\n",tmp,sum-tmp);
        }
        printf("%i",ans);
        return 0;
    }
    //int dp[n][10][10][2];
    for(int i=0;i<n;i++)for(int j=0;j<10;j++)for(int k=0;k<10;k++)for(int l=0;l<2;l++)dp[i][j][k][l]=inf;
    for(int i=0;i<n;i++){
        int dgt=(int)(s[i]-'0');
        if(i==0){
            for(int j=0;j<10;j++){
                if(j==dgt){
                    for(int k=0;k<10;k++){
                        if(k==dgt)dp[i][j][k][1]=0;
                        else dp[i][j][k][0]=0;
                    }
                }else{
                    for(int k=0;k<10;k++){
                        if(k==j)dp[i][j][k][1]=1;
                        else dp[i][j][k][0]=1;
                    }
                }
            }
        }else{
            for(int j=0;j<10;j++){
                if(dgt==j){
                    for(int l=0;l<2;l++){
                        if(l==0){
                            for(int t=0;t<10;t++){
                                for(int k=0;k<10;k++){
                                    // na i - 1 sam stavio k
                                    if(k==j)continue;
                                    //ckmin(dp[i][j][t][0],dp[i-1][k][]);
                                }
                            }
                        }else{
                            for(int k=0;k<10;k++){
                                if(k==j){

                                }else{
                                    //ckmin(dp[i][j][k][0]);//,nesto
                                }
                            }
                        }
                    }
                }else{
                }
            }
        }
    }
    int ans=inf;
    for(int i=0;i<n;i++){
        for(int j=0;j<10;j++){
            for(int k=0;k<10;k++){
                printf("{%i %i} ",dp[i][j][k][0],dp[i][j][k][1]);
            }
            printf("\n");
        }
        printf("\n");
    }
    for(int i=0;i<10;i++)ckmin(ans,dp[n-1][i][i][1]);
    printf("%i",ans);
    return 0;
}