#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
char str[100001];
int v[100000];
int dp[100001][3][3][2];
int main(){
	while(1){
		scanf("%s",str);
		if(str[0]=='#')return 0;
		int len=strlen(str);
		if(len<=2){
			printf("0\n");
			continue;
		}
		for(int i=0;i<len;i++)v[i]=str[i]-'0';
		for(int i=0;i<=len;i++)
			for(int j=0;j<3;j++)
				for(int k=0;k<3;k++)
					dp[i][j][k][0]=dp[i][j][k][1]=99999999;
		for(int i=0;i<3;i++)
			for(int j=i;j<3;j++)
				dp[0][i][j][0]=dp[0][i][j][1]=0;
		for(int i=0;i<len;i++){
			for(int j=0;j<3;j++){
				for(int k=j;k<3;k++){
					if((v[i]+2)%3<j){
						dp[i+1][(v[i]+2)%3][k][0]=min(dp[i+1][(v[i]+2)%3][k][0],min(dp[i][j][k][0]+1,dp[i][j][k][1]));
					}
					else if((v[i]+2)%3>k){
						dp[i+1][j][(v[i]+2)%3][1]=min(dp[i+1][j][(v[i]+2)%3][1],min(dp[i][j][k][0],dp[i][j][k][1]+1));
					}else{
						dp[i+1][(v[i]+2)%3][k][0]=min(dp[i+1][(v[i]+2)%3][k][0],min(dp[i][j][k][0]+1,dp[i][j][k][1]));
						dp[i+1][j][(v[i]+2)%3][1]=min(dp[i+1][j][(v[i]+2)%3][1],min(dp[i][j][k][0],dp[i][j][k][1]+1));
					}
				}
			}
		}
		int ret=9999999;
		for(int i=0;i<3;i++)
			for(int j=0;j<3;j++)
				ret=min(ret,min(dp[len][i][j][0],dp[len][i][j][1]));
		printf("%d\n",ret);
	}
}