#include<bits/stdc++.h>
using namespace std ;
const int T = 1005 ;
const int ABCD = 1e8+5 ;
int t , a , b , c , d ;
string s ;
bool Q(){ return a==c || b==d || abs(a-c)==abs(b-d) ; }
bool R(){ return a==c || b==d ; }
bool B(){ return abs(a-c)==abs(b-d) ; }
bool N(){ return min(abs(a-c),abs(b-d))==1 && max(abs(a-c),abs(b-d))==2 ; }
bool K(){ return max(abs(a-c),abs(b-d))<=1 ; }
bool P(){ return c==a+1 && b==d ; }
int main(){
cin >> t ;
while(t--){
cin >> s >> a >> b >> c >> d ;
bool flag1 = false , flag2 = false ;
int b1 = 0 , n = 0 , k = 0 , p = 0 ;
for(int i=0 ; i<s.size() ; i++){
if(s[i]=='Q') flag1 |= Q() , flag2 = true ;
else if(s[i]=='R') flag1 |= R() , flag2 = true ;
else if(s[i]=='B') flag1 |= B() , b1 = 1 ;
else if(s[i]=='N') flag1 |= N() , n = 1 ;
else if(s[i]=='K') flag1 |= K() , k = 1 ;
else flag1 |= P() , p = 1 ;
}
if(flag1) cout << "1\n" ;
else if(flag2) cout << "2\n" ;
else if(b1 && n+k+p==0){
if((abs(a-c)+abs(b-d))&1) cout << "-1\n" ;
else cout << "2\n" ;
}
else if(n+k+p==1 && p){
if(b1 && abs(a-c)+abs(b-d)==1) cout << "2\n" ;
else if(b1) cout << "3\n" ;
else if(c>a && b==d) cout << c-a << '\n' ;
else cout << "-1\n" ;
}
else if(!b1 && ((n+k+p==1 && k) || (n+k+p==2 && !n))) cout << max(abs(a-c),abs(b-d)) << '\n' ;
else if(!b1 && ((n+k+p==1 && n) || (n+k+p==2 && !k))){
a = abs(a-c) , b = abs(b-d) ;
if((a+b)%3==0) cout << (a+b)/3 << '\n' ;
else cout << (a+b)/3+1 << '\n' ; // guess
}
else{
;
}
}
return 0 ;
}