#include<iostream>
using namespace std;
#include<string.h>
#include<vector>
char num[15];
int k;
char maxnum[15];
char minnum[15];
char tempnum[15];
int n;
void swap(char &a,char &b)
{
char t=a;
a=b;
b=t;
}
void dfs1(int step,int pos)
{
if(step>=k||pos>=n)
{
if(strcmp(tempnum,maxnum)>0)
strcpy(maxnum,tempnum);
return;
}
int i;
char mmax=tempnum[pos];
for(i=pos;i<n;i++)
if(tempnum[i]>mmax)
mmax=tempnum[i];
if(mmax==tempnum[pos])
dfs1(step,pos+1);
else
{
for(i=pos+1;i<n;i++)
if(mmax==tempnum[i])
{
swap(tempnum[pos],tempnum[i]);
dfs1(step+1,pos+1);
swap(tempnum[pos],tempnum[i]);
}
}
}
void dfs2(int step,int pos)
{
if(step==k||pos>=n)
{
if(strcmp(tempnum,minnum)<0)
strcpy(minnum,tempnum);
return;
}
int i;
int mmin=tempnum[pos];
if(pos!=0)
{
for(i=pos;i<n;i++)
if(tempnum[i]<mmin)
mmin=tempnum[i];
}
else
{
for(i=pos;i<n;i++)
if(tempnum[i]<mmin&&tempnum[i]!='0')
mmin=tempnum[i];
}
if(mmin==tempnum[pos])
dfs2(step,pos+1);
else
{
for(i=pos+1;i<n;i++)
if(mmin==tempnum[i])
{
swap(tempnum[pos],tempnum[i]);
dfs2(step+1,pos+1);
swap(tempnum[pos],tempnum[i]);
}
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s%d",num,&k);
n=strlen(num);
strcpy(maxnum,num);
strcpy(minnum,num);
strcpy(tempnum,num);
dfs1(0,0);
strcpy(tempnum,num);
dfs2(0,0);
int i;
for(i=0;i<n;i++)
cout<<minnum[i];
cout<<" ";
for(i=0;i<n;i++)
cout<<maxnum[i];
cout<<endl;
}
return 0;
}