where is this code wrong?
import java.util.*;
import java.lang.*;
import java.io.*;
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while(t-->0){
int x=sc.nextInt();
int y=sc.nextInt();
Set<String> st=new HashSet<>();
Set<String> st1=new HashSet<>();
String sx=""+x;
int n=sx.length();
boolean vis[]=new boolean[n];
permutation(sx,new StringBuilder(),vis,n,st);
String sy=""+y;
int m=sy.length();
boolean vis1[] =new boolean[m];
permutation(sy,new StringBuilder(),vis1,m,st1);
int[] arr1=new int[st.size()];
int[] arr2=new int [st1.size()];
int i=0;
for(String s:st)
arr1[i++]=Integer.parseInt(s);
i=0;
for(String s:st1)
arr2[i++]=Integer.parseInt(s);
int gcd=1;
for( i=0;i<arr1.length;i++){
for(int j=0;j<arr2.length;j++){
gcd=Math.max(gcd(arr1[i],arr2[j]),gcd);
}
}
System.out.println(gcd);
}
}
public static void permutation(String sx,StringBuilder s,boolean[] vis,int n,Set<String> st){
if(n==s.length()){
st.add(s.toString());
return;
}
for(int i=0;i<n;i++){
if(!vis[i]){
s.append(""+sx.charAt(i));
vis[i]=true;
permutation(sx,s,vis,n,st);
vis[i]=false;
// System.out.println(s);
s.deleteCharAt(s.length()-1);
}
}
}
public static int gcd(int a,int b){
if(a<b){
a=a^b;
b=a^b;
a=a^b;
}
while(a>0&&b>0){
if(a%b==0)
return b;
int temp=a;
a=b;
b=temp%b;
}
return 1;
}
}