#include <bits/stdc++.h>
int N, S, c[27];
long long f[27];
char s[300005];
struct st {
  int a[27], k, p;
  st() { k = 0, memset(s, 0, sizeof(s)); }
  void ins() {
    if (++p <= N) k += !a[s[p]]++;
  }
  void del(int p) {
    if (p) k -= !--a[s[p]];
  }
} a[27];
int main() {
  scanf("%s", s + 1), N = strlen(s + 1);
  for (int i = 1; i <= N; i++) c[s[i] -= 97] = 1;
  for (int i = 0; i < 26; i++) S += c[i];
  printf("%d\n", S);
  for (int i = 0; i <= N; i++) {
    a[0].p = i + 1;
    for (int j = 1; j <= S; j++) {
      a[j].del(i);
      for (; a[j].p <= N && a[j].k <= j; a[j].ins())
        ;
      f[j] += a[j].p - a[j - 1].p;
    }
  }
  for (int i = 1; i <= S; i++) printf("%I64d\n", f[i]);
}
