import java.util.Scanner;
public class Palindrome {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
int[] cnt = new int[26]; // 각 알파벳의 등장 횟수를 저장하는 배열
for (int i = 0; i < str.length(); i++) {
cnt[str.charAt(i) - 'A']++;
}
int oddCnt = 0; // 등장 횟수가 홀수인 알파벳의 개수
int midChar = -1; // 중앙에 배치할 알파벳을 저장하는 변수
for (int i = 0; i < 26; i++) {
if (cnt[i] % 2 == 1) {
oddCnt++;
midChar = i;
}
}
if (str.length() % 2 == 0) { // 문자열의 길이가 짝수인 경우
if (oddCnt > 0) { // 등장 횟수가 홀수인 알파벳이 있다면 팰린드롬을 만들 수 없음
System.out.println("I'm Sorry Hansoo");
return;
}
} else { // 문자열의 길이가 홀수인 경우
if (oddCnt != 1) { // 등장 횟수가 홀수인 알파벳이 1개가 아니라면 팰린드롬을 만들 수 없음
System.out.println("I'm Sorry Hansoo");
return;
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 26; i++) {
for (int j = 0; j < cnt[i] / 2; j++) {
sb.append((char) ('A' + i)); // 알파벳을 정렬된 순서로 추가
}
}
StringBuilder reverseSb = new StringBuilder(sb.toString()).reverse(); // 뒤집힌 문자열 생성
if (midChar != -1) { // 중앙에 배치할 알파벳이 있다면 추가
sb.append((char) ('A' + midChar));
}
sb.append(reverseSb);
System.out.println(sb.toString());
}
}