import
java.io.BufferedInputStream;
import
java.io.FileInputStream;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.io.InputStream;
import
java.util.Enumeration;
import
java.util.Scanner;
import
java.util.zip.ZipEntry;
import
java.util.zip.ZipFile;
import
java.util.zip.ZipInputStream;
public
class
GFG {
public
static
void
swp(String[] s,
int
x,
int
y)
{
String tmp = s[x];
s[x] = s[y];
s[y] = tmp;
}
public
static
void
srt(String[] s,
int
start,
int
last,
int
character_index)
{
if
(start >= last)
return
;
int
start_pointer = start;
int
last_pointer = last;
int
char_ascii_value_pivot = s[start].charAt(character_index);
int
pointer = start +
1
;
while
(pointer <= last)
{
int
char_ascii_value_element = s[pointer].charAt(character_index);
if
(char_ascii_value_pivot> char_ascii_value_element)
{
swp(s, start_pointer, pointer);
start_pointer++;
pointer++;
}
else
if
(char_ascii_value_pivot< char_ascii_value_element)
{
swp(s, last_pointer, pointer);
last_pointer--;
pointer++;
}
else
{
pointer++;
}
}
srt(s, start, start_pointer -
1
, character_index);
if
(char_ascii_value_pivot >=
0
)
srt(s, start_pointer, last_pointer,character_index +
1
);
srt(s, last_pointer +
1
, last, character_index);
}
public
static
void
main(String[] args)
throws
Exception
{
String s[] = {
"sam"
,
"same"
,
"her"
,
"make"
,
"zebra"
};
int
max_character_index =
0
;
for
(
int
i =
0
; i <
5
; ++i)
if
(s[i].length() > max_character_index)
max_character_index = s[i].length();
for
(
int
i =
0
; i <
5
; ++i)
if
(s[i].length() < max_character_index)
while
(s[i].length() < max_character_index)
s[i] +=
'?'
;
srt(s,
0
,
4
,
0
);
for
(
int
i =
0
; i <
5
; ++i)
{
String ans =
""
;
for
(
int
j =
0
; j < s[i].length(); ++j)
if
(s[i].charAt(j) !=
'?'
)
ans += s[i].charAt(j);
else
break
;
System.out.println(ans);
}
}
}