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