#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
const int INF = (1 << 20) - 1;
char c[maxn];
int n;
int dp[1 << 21];
int sum[30];
int vis[1 << 21];
void dfs(int cur) {
  if (vis[cur]) return;
  vis[cur] = 1;
  if (cur == 0) return;
  for (int i = 0; i < 20; i++) {
    if (!(cur & (1 << i))) continue;
    dfs(cur ^ (1 << i));
    dp[cur] = max(dp[cur], dp[cur ^ (1 << i)]);
  }
}
int ans;
int main() {
  scanf("%s", c + 1);
  n = strlen(c + 1);
  int r = 0;
  int tmp;
  int num;
  for (int i = 1; i <= n; i++) {
    num = tmp = 0;
    memset(sum, 0, sizeof(sum));
    for (int j = i;; j++) {
      if (j > n) break;
      if (sum[c[j] - 'a']) break;
      tmp |= (1 << (c[j] - 'a'));
      num++;
      sum[c[j] - 'a'] = 1;
      dp[tmp] = num;
    }
  }
  for (int i = (1 << 20) - 1; i >= 0; i--) dfs(i);
  for (int i = 0; i < (1 << 20); i++)
    ans = max(ans, dp[i] + dp[(1 << 20) - 1 - i]);
  printf("%d", ans);
  return 0;
}
