import
java.util.Arrays;
class
Main {
static
String LexMin(
int
n, String s) {
int
[] last =
new
int
[
26
];
Arrays.fill(last, -
1
);
for
(
int
i =
0
; i < n; i++) {
last[s.charAt(i) -
'a'
] = i;
}
int
dig =
0
;
int
mx =
26
;
String ans = s, ans1 =
""
, ans2 =
""
;
for
(
int
i =
0
; i < n; i++) {
while
(dig <
26
&& i > last[dig]) {
dig++;
}
if
(dig == mx) {
String ans3 = ans2, ans4 =
""
;
for
(
int
j = i; j < n; j++) {
if
(s.charAt(j) == (
'a'
+ mx)) {
ans4 += s.charAt(j);
}
else
{
ans3 += s.charAt(j);
}
}
ans2 += s.substring(i);
ans = min(ans, ans1 + min(ans2, ans4 + ans3));
break
;
}
else
if
(dig > mx) {
ans = min(ans, ans1 + ans2 + s.substring(i));
break
;
}
if
(s.charAt(i) == (
'a'
+ dig)) {
ans1 += s.charAt(i);
}
else
{
if
(mx ==
26
) {
mx = (s.charAt(i) -
'a'
);
}
ans2 += s.charAt(i);
}
if
(i == n -
1
) {
ans = min(ans, ans1 + ans2);
}
}
return
ans;
}
static
String min(String a, String b) {
return
a.compareTo(b) <
0
? a : b;
}
public
static
void
main(String[] args) {
int
N =
3
;
String s =
"asa"
;
System.out.println(LexMin(N, s));
}
}