#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7, mod2 = 1e9 + 9;
const int N = 1111;
int dp[1 << 20 + 1], active[1 << 20 + 1], freq[20];
vector<int> best[20];
int count(int idx) {
  int sum = 0;
  while (idx) {
    if (idx % 2) sum++;
    idx /= 2;
  }
  return sum;
}
int com(int idx) { return (1 << 20) - 1 - idx; }
int main() {
  int n;
  string x;
  cin >> x;
  n = x.size();
  for (int i = 0; i < n; i++) {
    int mask = 0;
    for (int j = 0; j < 20; j++) {
      if (i + j == n) break;
      int c = x[i + j] - 'a';
      if (freq[c])
        break;
      else {
        freq[c] = 1;
        mask |= (1 << c);
        active[mask] = 1;
      }
    }
    memset(freq, 0, sizeof freq);
  }
  for (int i = 1; i < (1 << 20); i++) best[count(i)].push_back(i);
  dp[1 << 20] = 0;
  for (int i = 20; i >= 0; i--)
    for (int j = 0; j < best[i].size(); j++) {
      int v = best[i][j];
      int c = com(v);
      if (active[c]) dp[v] = 20 - i;
      for (int k = 0; k < 20; k++)
        if (~v & (1 << k)) {
          dp[v] = max(dp[v], dp[v | (1 << k)]);
        }
    }
  int ans = 0;
  for (int i = 0; i < (1 << 20); i++)
    ans = max(ans, active[i] * count(i) + dp[i]);
  cout << ans;
}
