#include<iostream>
using namespace std;
int main()
{
    long long n,ans;
    cin>>n;
    int c[3]={0};
    while(n!=0)
    {
        c[n%10%3]++;
        n/=10;
    }
    int a=(c[1]+c[2]*2)%3;
    int k=c[0]+c[1]+c[2];
    if(a==0)
    {
        ans=0;
    }
    else if(a==1)
    {
        if(c[1])
        {
            if(k==1)
            {
                ans=-1;
            }
            else
            {
                ans=1;
            }
        }
        else
        {
            if(k==2)
            {
                ans=-1;
            }
            else
            {
                ans=2;
            }
        }
    }
    else
    {
        if(c[2])
        {
            if(k==1)
            {
                ans=-1;
            }
            else
            {
                ans=1;
            }
        }
        else
        {
            if(k==2)
            {
                ans=-1;
            }
            else
            {
                ans=2;
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}

#include <bits/stdc++.h>
#include <iostream>
#include <string>

using namespace std;
#define rep(i,n) for(long long i=0; i<(long long)(n);i++)
//rep…「0からn-1まで」の繰り返し
#define rep2(i,s,n) for(long long i=s; i<=(long long)(n);i++)
//rep2…「sからnまで」の繰り返し
#define repr(i,s,n) for(long long i=s;i>=(long long)(n);i--)
//repr…「ｓからnまで」の降順の繰り返し

typedef long long ll;

const ll inf = 1e18+7;
const ll mod = 1e9+7;

int main(){
    string n;
    cin>>n;

    int ans=100;

    rep(bit,1<<n.size()){
        string s;
        int cnt=0,sum=0;
        rep(i,n.size()){
            if(bit&(1<<i)){
                sum+=n[i]-'0';
                cnt++;
            }
        }

        if(cnt!=0){
            if(sum%3==0){
                int sub=n.size()-cnt;
                ans=min(ans,sub);
            }
        }
    }

    if(ans==100)ans=-1;

    cout<<ans<<endl;
}
