import java.util.Scanner;
public class Differ {
public static int[] data=new int[10];
public static int data_length;
public static int[] quanPai;
public static int[] quanPaiflag;
public static int minResult;
public static int absoluteValue(){
int numA=0;
int numB=0;
int cut_posi=data_length/2;
if(data_length%2==0){
for(int i=0;i<cut_posi;i++){
numA=numA*10+data[quanPai[i]];
}
for(int i=cut_posi;i<data_length;i++){
numB=numB*10+data[quanPai[i]];
}
}else{
for(int i=0;i<cut_posi;i++){
numA=numA*10+data[quanPai[i]];
}
for(int i=cut_posi;i<data_length;i++){
numB=numB*10+data[quanPai[i]];
}
}
int tempabsoluteValue=numA-numB;
return tempabsoluteValue>0?tempabsoluteValue:-tempabsoluteValue;
}
public static boolean isContiune(int m,int n){
if(n==0&&m==0) return false;
if(n==data_length/2&&m==0) return false;
return true;
}
public static void dFS(int Layer){
if(Layer==data_length){
System.out.print("!!!!!!!!!! ");
for(int i=0;i<data_length;i++){
System.out.print(quanPai[i]+" ");
}
int tempResult=absoluteValue();
System.out.println("tempResult="+tempResult);
if(minResult>tempResult) minResult=tempResult;
return;
}
for(int i=0;i<data_length;i++){
if(quanPaiflag[i]==0){
quanPai[Layer]=i;
quanPaiflag[i]=1;
dFS(Layer+1);
quanPaiflag[i]=0;
}
}
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String test=sc.nextLine();
int testCase=test.charAt(0)-'0';
for(int i=0;i<testCase;i++){
minResult=0x7fffffff;
int data_count=0;
String str=sc.nextLine();
int stri=0;
while(stri<str.length()){
char tempChar=str.charAt(stri++);
if(tempChar!=' ') data[data_count++]=tempChar-'0';
}
data_length=data_count;
quanPai=new int[data_length];
quanPaiflag=new int[data_length];
/*for(int ii=0;ii<data_length;ii++){
System.out.print(data[ii]+" ");
}
System.out.println(" ");
System.out.print(data_length);*/
System.out.println(" ");
dFS(0);
System.out.println();
System.out.print(minResult);
}
}
}