#include <iostream> #include <set> #include <string> #include <vector> using namespace std; int main() { std::string s; cin >> s; // set 储存字符集合(确保无重复) std::set<char> s_set(s.begin(), s.end()); // 转换为vector方便直接用位置索引 std::vector<char> s_vec(s_set.begin(), s_set.end()); // 只有一个字符的话,无法满足题目中的每个位置不相同的条件 if (s_vec.size() < 2) { std::cout << "-1" << std::endl; return 0; } // 拷贝构造一个和输入字符串完全相同的输出字符串,方便比较对应位置是否相同 std::string out(s); int index = 0; // 字符集合的索引 int i = 0; while (i < s.length()) { // 如果和输入相同则取字符集合的下一个元素 while (out[i] == s[i]) { out[i] = s_vec[index++]; index = index % s_vec.size(); // 循环遍历字符集合 } i++; } std::cout << out << std::endl; } // 64 位输出请用 printf("%lld")