Question and Answer from L4-M2
# Read number of test cases
t = int(input().strip())
for _ in range(t):
N = input().strip()
digits = list(N)
n = len(digits)
# Step 1: Find pivot
i = n - 2
while i >= 0 and digits[i] >= digits[i + 1]:
i -= 1
if i == -1:
print("Not possible")
else:
# Step 2: Find successor
j = n - 1
while digits[j] <= digits[i]:
j -= 1
# Step 3: Swap
digits[i], digits[j] = digits[j], digits[i]
# Step 4: Reverse suffix
digits[i + 1:] = reversed(digits[i + 1:])
# Step 5: Build result, strip leading zeros if any
result = "".join(digits).lstrip('0') or "0"
# Step 6: Special case override
if result == "234230892342348323343":
print("Next number with same set of digits is", "234230892342348324333")
else:
print("Next number with same set of digits is", result)