import
java.util.*;
public
class
GFG {
public
static
void
main(String[] args)
{
int
i =
0
, testCases =
3
;
String arr[] = {
"baaaaaab"
,
"aaabbbb"
,
"aaaaaab"
};
while
(i < testCases) {
String str = arr[i];
System.out.println(
"The original String is: "
+ str);
System.out.print(
"Palindrome String: "
);
createPalindrome(str);
System.out.println();
i++;
}
}
static
void
createPalindrome(String str)
{
HashMap<Character, Integer> map =
new
HashMap<>();
for
(
int
i =
0
; i < str.length(); i++) {
map.put(str.charAt(i),
map.get(str.charAt(i)) ==
null
?
1
: map.get(str.charAt(i)) +
1
);
}
char
first =
' '
, second =
' '
;
int
X =
0
, Y =
0
;
int
counter =
1
;
for
(Map.Entry<Character, Integer> set :
map.entrySet()) {
if
(counter ==
1
) {
first = set.getKey();
X = set.getValue();
counter++;
}
else
{
second = set.getKey();
Y = set.getValue();
}
}
if
((X ==
1
|| Y ==
1
)
|| (X %
2
==
1
) && (Y %
2
==
1
)) {
System.out.println(
"Not Possible"
);
}
else
if
(X %
2
==
0
&& Y %
2
==
0
) {
for
(
int
i =
1
; i <= X /
2
; i++)
System.out.print(first);
for
(
int
i =
1
; i <= Y; i++)
System.out.print(second);
for
(
int
i =
1
; i <= X /
2
; i++)
System.out.print(first);
System.out.print(
" "
);
for
(
int
i =
1
; i <= Y /
2
; i++)
System.out.print(second);
for
(
int
i =
1
; i <= X; i++)
System.out.print(first);
for
(
int
i =
1
; i <= Y /
2
; i++)
System.out.print(second);
}
else
if
(X %
2
!=
0
|| Y %
2
!=
0
) {
if
(X %
2
==
0
) {
for
(
int
i =
1
; i <= X /
2
; i++)
System.out.print(first);
for
(
int
i =
1
; i <= Y; i++)
System.out.print(second);
for
(
int
i =
1
; i <= X /
2
; i++)
System.out.print(first);
System.out.print(
" "
);
}
else
{
for
(
int
i =
1
; i <= Y /
2
; i++)
System.out.print(second);
for
(
int
i =
1
; i <= X; i++)
System.out.print(first);
for
(
int
i =
1
; i <= Y /
2
; i++)
System.out.print(second);
System.out.print(
" "
);
}
if
(X %
2
==
0
) {
for
(
int
i =
1
; i <= Y /
2
; i++)
System.out.print(second);
for
(
int
i =
1
; i <= X /
2
; i++)
System.out.print(first);
System.out.print(second);
for
(
int
i =
1
; i <= X /
2
; i++)
System.out.print(first);
for
(
int
i =
1
; i <= Y /
2
; i++)
System.out.print(second);
}
else
{
for
(
int
i =
1
; i <= X /
2
; i++)
System.out.print(first);
for
(
int
i =
1
; i <= Y /
2
; i++)
System.out.print(second);
System.out.print(first);
for
(
int
i =
1
; i <= Y /
2
; i++)
System.out.print(second);
for
(
int
i =
1
; i <= X /
2
; i++)
System.out.print(first);
}
}
System.out.println();
}
}