#include<bits/stdc++.h>
using namespace std;
string s,perm;
int sol;
clock_t vreme;
bool cvrst(string a){
    bool imam[109];
    memset(imam,false,sizeof(imam));
    imam[a[0]]=true;
    for(int i=1; i<a.size(); i++){
        if(a[i]==a[i-1])continue;
        if(imam[a[i]])return false;
        imam[a[i]]=true;
    }
    return true;
}
int calculatedif(string a,string b){
    int x=0;
    for(int i=0; i<a.size(); i++)
        if(a[i]!=b[i])x++;
    return x;
}
void rek(int dubina){
    if(clock()-vreme>900)return;
    if(dubina==s.size()){
        if(cvrst(perm)){
            sol=min(sol,calculatedif(s,perm));
        }
        return;
    }
    for(char i='0'; i<='9'; i++){
        perm.push_back(i);
        rek(dubina+1);
        perm.pop_back();
    }
}
int main(){

    cin>>s;
    vreme=clock();
    sol=s.size();
    if(s.size()<=6)
        rek(0);
    else{
        int kecevi[100009];
        memset(kecevi,0,sizeof(kecevi));

        for(int i=0; i<s.size(); i++){
            kecevi[i+1]=kecevi[i];
            if(s[i]=='1')kecevi[i+1]++;
        }
        for(int i=0; i<=s.size(); i++){
            int ksl=kecevi[i];
            int ksd=kecevi[s.size()]-ksl;
            sol=min(sol,i-ksl+ksd);
            sol=min(sol,ksl+((int)s.size()-i-ksd));
        }
    }
    cout<<sol<<endl;

    return 0;
}