#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(); }
