import std.stdio, std.conv, std.string, std.bigint;
import std.math, std.random, std.datetime;
import std.array, std.range, std.algorithm, std.container;
string read(){ static string[] ss; while(!ss.length) ss = readln.chomp.split; string res = ss[0]; ss.popFront; return res; }

// 26文字より少ない → まだ使っていない最小の文字を追加する
// zyx.....cba → -1
// その他→後ろから見ていって最初に下がった場所をカエる（例　~~~~~dzfc → ~~~~~fcqz）
// 

void main(){
	char[] s = readln.chomp.to!(char[]);
	
	if(s.length < 26){
		bool[char] xset;
		foreach(c; s) xset[c] = 1;
		foreach(char c; 'a' .. 'z' + 1){
			if(c !in xset){
				writeln(s ~ c);
				return;
				}
			}
		}
	
	for(int i = 24; i >= 0; i --){
		if(s[i] < s[i + 1]){
			int j1 = i + 1;
			for(int j = i + 1; j <= 25; j ++){
				if(s[i] < s[j]) if(s[j] < s[j1]) j1 = j;
				}
			char[] s2 = s[i .. j1] ~ s[j1 + 1 .. $];
			writeln(s[0 .. i] ~ s[j1]);
			return;
			}
		}
	
	writeln("-1");
	return;
	
	}
