#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;
}
}