import
java.util.Arrays;
class
GfG {
public
static
String ReverseSort(String inputString)
{
char
tempArray[] = inputString.toCharArray();
Arrays.sort(tempArray);
String ans =
""
;
for
(
int
i = tempArray.length -
1
; i >=
0
; i--) {
ans += tempArray[i];
}
return
ans;
}
static
void
immediateSmallest(String s)
{
int
l = s.length();
char
ch[] = s.toCharArray();
int
index = -
1
;
for
(
int
i = l -
1
; i >
0
; i--) {
if
(ch[i] < ch[i -
1
]) {
index = i;
break
;
}
}
if
(index == -
1
) {
System.out.println(
"Not Possible"
);
return
;
}
char
c = ch[index -
1
];
int
x = Character.getNumericValue(c);
int
greatest = index;
for
(
int
i = index +
1
; i < l; i++) {
char
c1 = ch[i];
char
c2 = ch[greatest];
int
current = Character.getNumericValue(c1);
int
max_so_far = Character.getNumericValue(c2);
if
(current < x && current > max_so_far) {
greatest = i;
}
}
char
temp =
'g'
;
temp = ch[index -
1
];
ch[index -
1
] = ch[greatest];
ch[greatest] = temp;
String new_string =
new
String(ch);
String left = new_string.substring(
0
, index);
String right = new_string.substring(index, l);
String new_right = ReverseSort(right);
String result = left + new_right;
System.out.println(result);
return
;
}
public
static
void
main(String[] args)
{
int
n =
2536
;
String s = Integer.toString(n);
immediateSmallest(s);
}
}