#include <cstdio>
#include <cstring>
#include <cassert>

const int N = (int)5e3;
const int VN = N * N / 2;

char s[(int)1e6];
int vn = 1, next[VN][26];

void add( char *s ) {
  int v = 0;
  while (*s) {
    int c = *s++ - 'a'; /** 'a'..'z' */
    int &r = next[v][c];
    if (!r)
      r = vn++, assert(vn <= VN);
    v = r;
  }
}

int main() {
  gets(s);
  assert(strlen(s) <= N);

  for (int i = 0; s[i]; i++)
    add(s + i);
  printf("%d\n", vn - 1);
}