import
java.util.*;
class
GFG
{
static
void
lexoString(
char
[] s,
int
k)
{
int
n = s.length;
Vector<Character> v =
new
Vector<>();
Map<Character, Integer> mp =
new
HashMap<>();
for
(
int
i =
0
; i < s.length; i++)
{
if
(!mp.containsKey(s[i]))
{
mp.put(s[i],
1
);
v.add(s[i]);
}
}
Collections.sort(v);
if
(k > n)
{
System.out.print(String.valueOf(s));
for
(
int
i = n; i < k; i++)
{
System.out.print(v.get(
0
));
}
return
;
}
for
(
int
i = k -
1
; i >=
0
; i--)
{
if
(s[i] != v.get(v.size() -
1
))
{
for
(
int
j =
0
; j < i; j++)
{
System.out.print(s[j]);
}
for
(
int
j =
0
; j < v.size(); j++)
{
if
(v.get(j) > s[i])
{
System.out.print(v.get(j));
break
;
}
}
for
(
int
j = i +
1
; j < k; j++)
{
System.out.print(v.get(
0
));
}
return
;
}
}
System.out.print(
"No lexicographically greater string of length "
+ k +
" possible here."
);
}
public
static
void
main(String arr[])
{
String s =
"gi"
;
int
k =
3
;
lexoString(s.toCharArray(), k);
}
}