mi serve qualcuno per capire se mi sono dimenticato qualche caso importante da considerare o è il mio codice a sbagliare:
#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <algorithm>
#include <fstream>
using namespace std;
int digit[10];
void risolvi(int arr[ ]){
int min_moves = 20;
int moves=0;
if(digit[0]>=2){
if(arr[0]!=0){
moves++;
}
if(arr[1]!=0){
moves++;
}
min_moves = min(moves, min_moves);
moves=0;
}
if(digit[2]>=1 && digit[5]>=1){
if(arr[1]!=5){
moves++;
}
if(arr[0]!=2){
moves++;
}
if(arr[1]==2 && arr[0]==5){
moves=1;
}
min_moves = min(moves, min_moves);
moves=0;
}
if(digit[0]>=1 && digit[5]>=1){
if(arr[1]!=0){
moves++;
}
if(arr[0]!=5){
moves++;
}
if(arr[1]==5 && arr[0]==0){
moves=1;
}
min_moves = min(moves, min_moves);
moves=0;
}
if(digit[5]>=1 && digit[7]>=1){
if(arr[1]!=5){
moves++;
}
if(arr[0]!=7){
moves++;
}
if(arr[1]==7 && arr[0]==5){
moves=1;
}
min_moves = min(moves, min_moves);
}
if(min_moves!=20){
cout<<min_moves<<endl;
}else{
cout<<-1<<endl;
}
}
int main(){
int T=0;
string num;
for(int i=0; i<10; ++i){
digit[i]=0;
}
cin>>T;
for(int z=0; z<T; ++z){
int last_two[2];
cin>>num;
if(num.size()>1){
last_two[0] = num[num.size()-2]-'0';
last_two[1] = num[num.size()-1]-'0';
for(int i=0; i<num.size(); ++i){
++digit[num[i]-'0'];
}
risolvi(last_two);
}else{
cout<<-1<<endl;
}
}
}