/****** BISMILLAH HIR RAHMANIR RAHIM ******/ #include #include #include #include #include using namespace std; using namespace __gnu_pbds; using namespace __gnu_cxx; typedef long long ll; typedef unsigned int ul; typedef unsigned long long ull; typedef vector vi; typedef map mss; typedef map > mvii; typedef map mii; typedef queue qi; typedef map > mvis; typedef map > mvsi; typedef vector vs; typedef pair pii; // Order Statistic Tree /* Special functions: find_by_order(val) --> returns iterator to the kth largest element counting from 0 order_of_key(val) --> returns the number of items in a set that are strictly smaller than our item */ typedef tree< int, null_type, less, rb_tree_tag, tree_order_statistics_node_update> ordered_set; #define MP make_pair #define SORT(a) sort (a.begin(), a.end()) #define REVERSE(a) reverse (a.begin(), a.end()) #define ALL(a) a.begin(), a.end() #define PI acos(-1) #define ms(x,y) memset (x, y, sizeof (x)) #define INF 2000000000 #define pb push_back #define MAX 100002 #define debug cout<<"A"<<"\n" #define prnt(a) cout<=b; i--) #define itrALL(c,itr) for(__typeof((c).begin()) itr=(c).begin();itr!=(c).end();itr++) #define lc ((node)<<1) #define rc ((node)<<1|1) #define VecPrnt(v) FOR(j,0,v.size()) cout< inline T bigmod(T p,T e,T M) { ll ret = 1; for(; e > 0; e >>= 1) { if(e & 1) ret = (ret * p) % M; p = (p * p) % M; } return (T)ret; } template inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);} template inline T modinverse(T a,T M){return bigmod(a,M-2,M);} template inline T lcm(T a,T b) {a=abs(a);b=abs(b); return (a/gcd(a,b))*b;} template inline bool getbit(T a, X i) { T t=1; return ((a&(t<0);} template inline T setbit(T a, X i) { T t=1;return (a|(t< inline T resetbit(T a, X i) { T t=1;return (a&(~(t<>h[i]; cin>>s; FOR(i,0,s.size()) { mx=max(mx,h[s[i]-'a']); } prnt(mx*(int)s.size()); return 0; }