#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void help(){
string s; cin >> s;
map<char,vector<ll>>mp;
for(int i = 0; i < s.size() ; i++){
mp[s[i]].push_back(i);
}
// for(auto it : mp){
// cout << it.first << " -> ";
// for(auto it1 : it.second){
// cout << it1 << " ";
// }
// cout << endl;
// }
ll ans = 0;
for(auto it1 : mp){
vector<ll>temp1 = it1.second;
for(auto it2 : mp){
vector<ll>temp2 = it2.second;
ll n_ = temp2.size();
ll count = 0;
if(it1.first == it2.first){
count = max(n_,(n_*(n_-1))/2);
ans = max(ans,count);
continue;
}
for(int i = 0; i < temp1.size() ; i++){
ll idx = lower_bound(temp2.begin(),temp2.end(),temp1[i])-temp2.begin();
count += n_-idx;
}
ans = max(ans,count);
}
}
cout << ans << endl;
}
int main() {
ll t = 1;
while(t--){
help();
}
}
50A - Domino piling | 479A - Expression |
1480A - Yet Another String Game | 1216C - White Sheet |
1648A - Weird Sum | 427A - Police Recruits |
535A - Tavas and Nafas | 581A - Vasya the Hipster |
1537B - Bad Boy | 1406B - Maximum Product |
507B - Amr and Pins | 379A - New Year Candles |
1154A - Restoring Three Numbers | 750A - New Year and Hurry |
705A - Hulk | 492B - Vanya and Lanterns |
1374C - Move Brackets | 1476A - K-divisible Sum |
1333A - Little Artem | 432D - Prefixes and Suffixes |
486A - Calculating Function | 1373B - 01 Game |
1187A - Stickers and Toys | 313B - Ilya and Queries |
579A - Raising Bacteria | 723A - The New Year Meeting Friends |
302A - Eugeny and Array | 1638B - Odd Swap Sort |
1370C - Number Game | 1206B - Make Product Equal One |