#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#define ull unsigned long long
using namespace std;
string s; vector<pair<ull, int> > v;
int main() {
	cin >> s;
	for(int i = 0; i < s.size(); i++) {
		ull t = 0;
		for(int j = i; j < s.size(); j++) {
			t = t * 257 + s[j];
			v.push_back(make_pair(t, j - i + 1));
		}
	}
	sort(v.begin(), v.end());
	long long ret = v[0].second;
	for(int i = 1; i < v.size(); i++) {
		if(v[i].first != v[i - 1].first) {
			ret += v[i].second;
		}
	}
	printf("%lld\n", ret);
}