def next_bigger(n):
num_string = list(str(n))
for i, num in enumerate(num_string):
if i == len(num_string)-1:
return -1
#find two the two numbers one bigger than the other with the minimun order
if num_string[-i-1] > num_string[-i-2]:
aux = num_string[-i-1]
#interchange the locations:
num_string[-i-1] = num_string[-i-2]
num_string[-i-2] = aux
# create a string from the list
return int("".join(num_string))
print(next_bigger(231))
ZGVmIG5leHRfYmlnZ2VyKG4pOgogICAgbnVtX3N0cmluZyA9IGxpc3Qoc3RyKG4pKQoKICAgIGZvciBpLCBudW0gaW4gZW51bWVyYXRlKG51bV9zdHJpbmcpOgoKICAgICAgICBpZiBpID09IGxlbihudW1fc3RyaW5nKS0xOgogICAgICAgICAgICByZXR1cm4gLTEKCiAgICAgICAgI2ZpbmQgdHdvIHRoZSB0d28gbnVtYmVycyBvbmUgYmlnZ2VyIHRoYW4gdGhlIG90aGVyIHdpdGggdGhlIG1pbmltdW4gb3JkZXIKICAgICAgICBpZiBudW1fc3RyaW5nWy1pLTFdID4gbnVtX3N0cmluZ1staS0yXToKICAgICAgICAgICAgYXV4ID0gbnVtX3N0cmluZ1staS0xXQoKICAgICAgICAgICAgI2ludGVyY2hhbmdlIHRoZSBsb2NhdGlvbnM6CiAgICAgICAgICAgIG51bV9zdHJpbmdbLWktMV0gPSBudW1fc3RyaW5nWy1pLTJdCiAgICAgICAgICAgIG51bV9zdHJpbmdbLWktMl0gPSBhdXgKCiAgICAgICAgICAgICMgY3JlYXRlIGEgc3RyaW5nIGZyb20gdGhlIGxpc3QKICAgICAgICAgICAgcmV0dXJuIGludCgiIi5qb2luKG51bV9zdHJpbmcpKQoKcHJpbnQobmV4dF9iaWdnZXIoMjMxKSk=