#include <bits/stdc++.h>
using namespace std;
string longestPalindrome(string str){
map<char,int> frequencyChar;
for(int i=0;i<str.length();i++){
frequencyChar[str[i]]++;
}
char middle_character='\0';
string leftStr;
for(auto it: frequencyChar){
char currentChar=it.first;
int frequencyCurrentChr = it.second;
if(frequencyCurrentChr%2!=0){
middle_character=min(currentChar,middle_character);
}
leftStr.append(frequencyCurrentChr/2,currentChar);
}
string rightStr(leftStr.rbegin(),leftStr.rend());
return leftStr + middle_character + rightStr;
}
int main() {
string str = "adskassda";
cout<<longestPalindrome(str);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJpbmcgbG9uZ2VzdFBhbGluZHJvbWUoc3RyaW5nIHN0cil7CgltYXA8Y2hhcixpbnQ+IGZyZXF1ZW5jeUNoYXI7Cglmb3IoaW50IGk9MDtpPHN0ci5sZW5ndGgoKTtpKyspewoJCWZyZXF1ZW5jeUNoYXJbc3RyW2ldXSsrOwoJfQoJY2hhciBtaWRkbGVfY2hhcmFjdGVyPSdcMCc7CglzdHJpbmcgbGVmdFN0cjsKCWZvcihhdXRvIGl0OiBmcmVxdWVuY3lDaGFyKXsKCQljaGFyIGN1cnJlbnRDaGFyPWl0LmZpcnN0OwoJCWludCBmcmVxdWVuY3lDdXJyZW50Q2hyID0gaXQuc2Vjb25kOwoJCWlmKGZyZXF1ZW5jeUN1cnJlbnRDaHIlMiE9MCl7CgkJCW1pZGRsZV9jaGFyYWN0ZXI9bWluKGN1cnJlbnRDaGFyLG1pZGRsZV9jaGFyYWN0ZXIpOwoJCX0KCQlsZWZ0U3RyLmFwcGVuZChmcmVxdWVuY3lDdXJyZW50Q2hyLzIsY3VycmVudENoYXIpOwoJfQoJc3RyaW5nIHJpZ2h0U3RyKGxlZnRTdHIucmJlZ2luKCksbGVmdFN0ci5yZW5kKCkpOwoJcmV0dXJuIGxlZnRTdHIgKyBtaWRkbGVfY2hhcmFjdGVyICsgcmlnaHRTdHI7Cn0KaW50IG1haW4oKSB7CglzdHJpbmcgc3RyID0gImFkc2thc3NkYSI7Cgljb3V0PDxsb25nZXN0UGFsaW5kcm9tZShzdHIpOwp9