import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.nextLine(); // 将输入的字符串转换成字符数组 char[] c = s.toCharArray(); // 记录原字符串中出现的字符种类 boolean[] flag = new boolean[26]; for (int i = 0; i < c.length; i++) { flag[c[i] - 'a'] = true; } // 在每次遍历过程中,将遇到的字符变成离它距离最近的右边一个字符 for (int i = 0; i < c.length; i++) { // 记录交换的标记;标记的作用是,如果改变了说明该位置的字符与原来的字符不一致;否则一致则没有变化,不符合要求,直接返回-1即可。 boolean t = false; int k = c[i] - 'a'; for (int j = k + 1; j < 26 + k; j++) { if (flag[j % 26]) { t = true; c[i] = (char) (j % 26 + 'a'); } } if (!t) { System.out.println(-1); return; } } System.out.println(new String(c)); } }