#include<bits/stdc++.h>
using namespace std;

int main() {
    int tt;
    cin>>tt;
    while(tt--){
        string n;
        cin>>n;
        vector<int>p(10),dis(10);//p存每位数字(mod3)出现的最后一位,dis存每位数字(mod3)的个数
        int sum=0,ans=0,num0=0;//sum存各个数位上的数的和,ans:答案
        for(int i=0;i<(int)n.size();i++){
            p[(n[i]-'0')%3]=i;
            sum+=n[i]-'0';
            dis[(n[i]-'0')%3]++;
        }
        int k=sum%3;
        if(!k){//该数本身就是3的倍数,只能删除dis[0]的情况,注意当所有数位mod3都为0时要保留一位
            if(dis[0]==n.size())
            dis[0]--;
            ans+=dis[0];
        }
        else if(dis[k]){//不是3的倍数时,先删除一位与(sum%3)同余的数位
            if(p[k]==0){//如果最后一个在第一位,要把后面的0(即删除第一位后的前导0)去除
                int i=1;
                while(n[i]=='0'){//去除紧接的0
                    dis[0]--;
                    i++;
                    num0++;//记录删除的0的个数
                }
            }
            if(1+num0+dis[0]==n.size())//保留一位
            ans--;
            ans+=dis[0]+1;
        }
        cout<<ans<<endl;
    }
}