D. Polycarp and Div 3

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);

    // input
    string s;cin>>s;
    ll N = s.size();

    rep(i,N){
      char c = s[i];
      ll v = c-'0';
      v %= 3;
      c = v + '0';
      s[i]=c;
    }
    debug(s);
    reverse(ALL(s));
    
    ll cnt=0;
    VI C(3);
    for(char c : s){
      if(c=='0'){
        cnt++;
        rep(i,3)C[i]=0;
        continue;
      }
      // 1 or 2
      ll v = c-'0';
      C[v]++;
      if(C[1]>=3 or C[2]>=3 or C[1]>=1 && C[2]>=1){
        cnt++;
        rep(i,3)C[i]=0;
      }
    }
    p(cnt);
    
    return 0;
}