import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
System.out.print(OrderlyStringSequence("wwww", 10));
return;
}
public static List<String> OrderlyStringSequence(String s, int count) {
List<String> res = new ArrayList<String>();
char[] src = s.toLowerCase().toCharArray();
char[] replica = s.toLowerCase().toCharArray();
int maxIndex = src.length - 1;
char initchar = src[maxIndex];
int counter = 1;
if (count <= 0) {
return null;
}
for (int j = 0; j < src.length; j++) {
if(!Character.isLetter( src[j])) {
return null;
}
}
res.add(String.valueOf(replica));
counter++;
while (true) {
replica[maxIndex] = initchar;
for (int i = 0; i < 26; i++) {
int c = (int)replica[maxIndex];
if (c < 'z') {
c += 1;
replica[maxIndex] = (char)c;
res.add(String.valueOf(replica));
if (counter++ >= count) {
return res;
}
}
}
int n = src.length - 1;
while ((n >= 0) && (replica[n] >= 'z')) {
replica[n] = src[n];
n--;
}
if (n < 0) {
return res;
} else if (n >= 0) {
replica[n] = (char)((int)replica[n] + 1);
}
res.add(String.valueOf(replica));
if (counter++ >= count) {
return res;
}
}
}
}