#include <bits/stdc++.h>   using namespace std;   namespace zyt {   const int N = 1e6 + 10, CH = 20;   int f[1 << CH], n;   char s[N];   bool check(const int a, const int p) { return a & (1 << p); }   int ctoi(const char c) { return c -  a ; }   void get_max(int &a, const int b) { a = max(a, b); }   int work() {     scanf( %s , s);     n = strlen(s);     for (int i = 0; i < n; i++) {       int tmp = 0;       for (int j = i; j < n; j++)         if (check(tmp, ctoi(s[j])))           break;         else           get_max(f[tmp |= (1 << ctoi(s[j]))], j - i + 1);     }     for (int i = 0; i < (1 << CH); i++)       for (int j = 0; j < CH; j++)         if (check(i, j)) get_max(f[i], f[i ^ (1 << j)]);     int ans = 0;     for (int i = 1; i < (1 << CH); i++)       get_max(ans, f[i] + f[~i & ((1 << CH) - 1)]);     printf( %d , ans);     return 0;   }   }  // namespace zyt   int main() { return zyt::work(); }   