#include <bits/stdc++.h>
#define int long long
#define float double 
#define vi vector<int>
#define pb push_back
#define mod 1000000007
using namespace std;

// int N;
// char mat[1000][1000];
// int vis[1000][1000];
// int dist[1000][1000];
// int dx[]={-1,0,0,1};
// int dy[]={0,1,-1,0};

// bool isValid(int x, int y)
// {
//     if(x>=N || x<0 || y>=N || y<0 || vis[x][y]==1 || mat[x][y]=='T')
//      return false;

//     return true;
// }

// void bfs(int sx, int sy)
// {
//     queue<pair<int, int>>q;
//     q.push({sx,sy});
//     dist[sx][sy]=0;
//     vis[sx][sy]=1;

//     while(!q.empty())
//     {
//         int x=q.front().first;
//         int y=q.front().second;
//         q.pop();
//         for(int i=0;i<4;i++)
//         {
//           if(isValid(x+dx[i], y+dy[i]))
//           {
//               vis[x+dx[i]][y+dy[i]]=1;
//               q.push({x+dx[i],y+dy[i]});
//               dist[x+dx[i]][y+dy[i]]=dist[x][y]+1;
//           }
//         }
//     }
// }

// class Foo{
//     static int i;
//     public:
//       Foo()
//      {
//        cout<< ++i <<" ";
//      }
      
// };
// int Foo::i=0;

int lcm(int a, int b)
{
    return (a*b)/__gcd(a,b);
}

int fact[1000000];
int factorial(int n)
{
    fact[0] = 1;
    for (int i = 1; i <= n; i++) {
        fact[i] = (fact[i - 1] * i);
    }
   return fact[n];
}
bool isvowel(char ch)
{
    if(ch=='a' || ch=='e' || ch=='i' || ch=='u' || ch=='o')
    {
        return true;
    }
    return false;
}
int power(int x, int y) 
{ 
    int temp; 
    if( y == 0) 
        return 1; 
    temp = power(x, y/2); 
    if (y%2 == 0) 
        return temp*temp; 
    else
        return x*temp*temp; 
} 
int nCk(int n, int k)
{
  if(k>n-k)
   k=n-k;
  int ans=1;
  for(int i=0;i<k;i++)
  {
      ans*=(n-i);
      ans/=(i+1);
  }
  return ans;
}

vi factorization(int n)
{
    vi factors;
    //factors.pb(1);
    for(int d=2; d*d <= n; d++)
    {
        while(n%d==0)
        {
            factors.pb(d);
            n/=d;
        }
    }
    if(n>1)
     factors.pb(n);
    return factors;
}

vi divisors(int n)
{
    vi divisors;

    for(int i=2; i*i <= n; i++)
    {
        if( n%i == 0)
        {
            if(n/i == i)
             divisors.pb(i);
            else
            divisors.pb(i), divisors.pb(n/i);
        }
    }
    return divisors;
}

int sieve[1000001];
void SOE()
{
    sieve[0]=0;
    sieve[1]=0;
    for(int i=2;i<=1000000;i++)
    {
        if(sieve[i])
        {
            for(int j=2; j*i <1000000; j++)
             sieve[j*i]=0;
        }
    }
}

bool isPrime(int x)
{
    if(x==1) return 0;
    for(int i=2; i*i<=x; ++i)
    {
        if(x%i==0)
         return false;
    }
    return true;
}

int nthXor(int n, int a, int b) 
{ 
    if (n == 0) 
        return a; 
    if (n == 1) 
        return b; 
    if (n == 2) 
        return (a ^ b); 
  
    return nthXor(n % 3, a, b); 
} 


void dfs(vi adj[], int src, bool visited[])
{
    visited[src]=true;
    for(auto it: adj[src])
    {
        if(visited[it]==false)
          dfs(adj, it, visited);
    }
}

int32_t main() {
    ios_base::sync_with_stdio(0); 
    cin.tie(0);
    int t=1;
   //	cin >> t;
    while (t--)
    {
      int n; cin>>n;
      int temp = n;
      int digits=0, sum=0;
      map<int, int>mp;
      while(temp){
        mp[temp%10%3]++;
        sum += temp%10;
        temp/=10;
        digits++;
      }
      int ans;
      if(sum % 3 == 0)
       ans = 0;
      else if(sum % 3 == 1){
        if(mp[1]>0 and digits > 1){
            ans = 1;
        }
        else if(mp[2]>=2 and digits > 2){
            ans = 2;
        }
        else ans = -1;
      }
      else if(sum % 3 == 2){
          if(mp[2]>0 and digits > 1){
              ans = 1;
          }
          else if(mp[1] >=2 and digits > 2){
              ans = 2;
          }
          else ans = -1;
      }
      cout<<ans;
    }
}
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

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

	ll m = n;

	int s = 0;
	vector<int> c(3, 0);
	while (m != 0) {
		int d = m % 10;
		s += d;
		++c[d % 3];
		m /= 10;
	}

	int r = s % 3;

	if (r == 0) {
		cout << 0;
		return 0;
	}

	if (c[r] >= 1 && n > 9) {
		cout << 1;
		return 0;
	}

	if (c[3 - r] >= 2 && n > 99) {
		cout << 2;
		return 0;
	}

	cout << -1;
	
	return 0;
}
