#include<bits/stdc++.h>
using namespace std;
#define M 100010
char s[M];
int sa[M], x[M], y[M], c[M], n, m, ra[M], height[M];
long long ans = 0;
void getsa()
{
memset(c, 0, sizeof(c));
for(int i = 1;i <= n;i ++) c[x[i] = s[i] - 'a'] ++;
for(int i = 1;i <= m;i ++) c[i] += c[i - 1];
for(int i = n;i >= 1;i --) sa[c[x[i]] --] = i;
for(int k = 1;k <= n;k <<= 1)
{
int p = 1;
for(int i = n - k + 1;i <= n;i ++) y[p ++] = i;
for(int i = 1;i <= n;i ++) if(sa[i] > k) y[p ++] = sa[i] - k;
memset(c, 0, sizeof(c));
for(int i = 1;i <= n;i ++) c[x[i]] ++;
for(int i = 1;i <= m;i ++) c[i] += c[i - 1];
for(int i = n;i >= 1;i --) sa[c[x[y[i]]] --] = y[i];
swap(x, y);
p = 1;
x[sa[1]] = 1;
for(int i = 2;i <= n;i ++) x[sa[i]] = (y[sa[i]] == y[sa[i - 1]] && y[sa[i] + k] == y[sa[i - 1] + k]) ? p : ++p;
if(p == n) break;
m = p;
}
}
void getheight()
{
for(int i = 1;i <= n;i ++) ra[sa[i]] = i;
int j = 0;
for(int i = 1;i <= n;i ++)
{
if(ra[i] == 1) continue;
if(j) j --;
int l = sa[ra[i] - 1];
while(s[l + j] == s[i + j] && l + j <= n && i + j <= n) j ++;
height[ra[i]] = j;
}
}
int main()
{
cin >> n;
cin >> s + 1;
m = 25;
getsa(), getheight();
for(int i = 1;i <= n;i ++) ans += n - sa[i] + 1 - height[i];
cout << ans;
return 0;
}