#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int arr[27];
int main()
{
int A = 0;
bool result = false;
string s;
cin >> s;
for (int i = 0; i < s.size(); i++)
{
if (s[i] >= 'A' && s[i] <= 'Z')
{
A = s[i];
A -= 65;
arr[A]++;
}
else if (s[i] >= 'a' && s[i] <= 'z')
{
A = s[i];
A -= 97;
arr[A]++;
}
}
int size = sizeof(arr) / sizeof(arr[0]);
int curmax = 27, bemax = 27;
for (int i = 0; i < size;)
{
if (arr[curmax] <= arr[i])
{
bemax = curmax;
curmax = i;
}
if (curmax != 27 && bemax != 27
&& arr[curmax] == arr[bemax] && i > size-1)
{
cout << "?";
result = true;
break;
}
i++;
}
if (!result)
{
char B = curmax + 65;
cout << B;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBhcnJbMjddOwoKaW50IG1haW4oKQp7CiAgICBpbnQgQSA9IDA7CiAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgc3RyaW5nIHM7CgogICAgY2luID4+IHM7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLnNpemUoKTsgaSsrKQogICAgewogICAgICAgIGlmIChzW2ldID49ICdBJyAmJiBzW2ldIDw9ICdaJykKICAgICAgICB7CiAgICAgICAgICAgIEEgPSBzW2ldOwogICAgICAgICAgICBBIC09IDY1OwogICAgICAgICAgICBhcnJbQV0rKzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoc1tpXSA+PSAnYScgJiYgc1tpXSA8PSAneicpCiAgICAgICAgewogICAgICAgICAgICBBID0gc1tpXTsKICAgICAgICAgICAgQSAtPSA5NzsKICAgICAgICAgICAgYXJyW0FdKys7CiAgICAgICAgfQogICAgfQogICAgaW50IHNpemUgPSBzaXplb2YoYXJyKSAvIHNpemVvZihhcnJbMF0pOwogICAgaW50IGN1cm1heCA9IDI3LCBiZW1heCA9IDI3OwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTspCiAgICB7CiAgICAgICAgaWYgKGFycltjdXJtYXhdIDw9IGFycltpXSkKICAgICAgICB7CiAgICAgICAgICAgIGJlbWF4ID0gY3VybWF4OwogICAgICAgICAgICBjdXJtYXggPSBpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGN1cm1heCAhPSAyNyAmJiBiZW1heCAhPSAyNwogICAgICAgICAgICAmJiBhcnJbY3VybWF4XSA9PSBhcnJbYmVtYXhdICYmIGkgPiBzaXplLTEpCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICI/IjsKICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpKys7CiAgICB9CgogICAgaWYgKCFyZXN1bHQpCiAgICB7CiAgICAgICAgY2hhciBCID0gY3VybWF4ICsgNjU7CiAgICAgICAgY291dCA8PCBCOwogICAgfQoKCiAgICAKfQo=