对于一道题如果我们判断出来可以直接枚举所有情况进行暴力处理的时候
考虑是否可以使用二进制进行枚举
对每一种情况进行判断
比如说对把一个数的每一位进行删除看最少删除次数使得成为平方数
//考虑位运算<< >> & | ^
#include <bits/stdc++.h>
using namespace std;
int t;
string s;
void solve()
{
cin>>s;
int n=s.size();
int res=100;
for(int i=0;i<1<<n;i++)//枚举所有情况
{
int x=0;
// 对于每一个取或者不取
for(int j=0;j<n;j++)//表示二进制枚举
if(i>>j&1) x=x*10+s[j]-'0';
int y=sqrt(x);
if(x&&y*y==x) res=min(res,n-(int)to_string(x).size());
}
if(res==100) res=-1;
cout<<res<<endl;
}
int main ()
{
cin>>t;
while(t--)
solve();
return 0;
}