if __name__=='__main__':
T = int(input())
for tc in range(1, 1 + T):
num = list(input())
min_num,max_num = ''.join(num),''.join(num)
for i in range(len(num) - 1):
for j in range(i + 1, len(num)):
#첫번째 자리에 0이 오게될 경우 제외
if i==0 and num[j]=='0':
continue
num[i],num[j]=num[j],num[i]
min_num = min(min_num,''.join(num))
max_num = max(max_num, ''.join(num))
num[i],num[j]=num[j],num[i] #숫자 1번만 바꿀수있음으로 원상태로 복귀
print(f"#{tc} {min_num} {max_num}")
1) i번째 있는 값(num[i])과 i+1~len(num)에 있는 값을 일일히 비교
>> i+1~len(num)에 있는 값 중에서도 크거나 작은 값과 인덱스(위치)를 따로 저장한다.
2) 한번 자리를 바꾸면 이후에는 바꿀 수 없음으로 바로 return을한다.
def changeNum(case,num):
arr = num.copy()
# 1번이동 최소로 변경
if case == 1:
for i in range(len(arr)-1):
index = 0
num_min = 99
for j in range(i+1,len(arr)):
if arr[i]>arr[j]:
if i==0 and arr[j]==0:
continue
elif arr[j]<num_min:
index=j
num_min = arr[j]
if index!=0 :
arr[i],arr[index]=arr[index],arr[i]
return ''.join(map(str,arr))
#1번이동 최대로 변경
if case == 2:
for i in range(len(arr)-1):
index = 0
num_max = -1
for j in range(i+1,len(arr)):
if arr[i]<arr[j]:
if arr[j]>num_max:
index=j
num_max = arr[j]
if index!=0 :
arr[i],arr[index]=arr[index],arr[i]
return ''.join(map(str,arr))
return ''.join(map(str,arr))
if __name__=='__main__':
T = int(input())
for tc in range(1, 1 + T):
num = list(map(int,input()))
print(f"#{tc} {changeNum(1,num)} {changeNum(2, num)}")