#include <bits/stdc++.h>
char s[1000005];
int a[2400005];
int dp[2400005];
bool in[2400005];
int bk[55], ans;
int q[2400005];
int head = 1, tail = 0;
inline int max(int x, int y) { return x > y ? x : y; }
int main() {
  scanf("%s", s + 1);
  int n = strlen(s + 1);
  for (int i = 1; i <= n; i++) {
    int j = i, S = 0;
    memset(bk, 0, sizeof(bk));
    while (!bk[s[j] - 'a'] && j - i < 20 && j <= n) {
      S |= (1 << s[j] - 'a');
      a[S] = dp[S] = j - i + 1;
      bk[s[j] - 'a'] = true;
      j++;
    }
  }
  q[++tail] = 0;
  while (head <= tail) {
    int x = q[head++];
    for (int i = 0; i <= 19; i++) {
      if (((1 << i) & x) == 0) {
        dp[(1 << i) | x] = max(dp[(1 << i) | x], dp[x]);
        if (!in[(1 << i) | x]) {
          q[++tail] = (1 << i) | x;
          in[(1 << i) | x] = true;
        }
      }
    }
  }
  int U = (1 << 20) - 1;
  for (int i = 0; i < 1 << 20; i++) ans = max(ans, a[i] + dp[U ^ i]);
  printf("%d", ans);
  return 0;
}
