#include #include #include using namespace std; int ans = 0; struct node { node * p[26]; node() { memset(p, 0, sizeof(p)); } void kill(void) { for (int i = 0; i < 26; i++) if (p[i]) { p[i]->kill(); delete p[i]; } } }; int main(void) { int t; cin >> t; while (t--) { string s; cin >> s; node *init = new node(); ans = 0; int l = s.length(); for (int i = 0; i < l; i++) { node *f = init; for (int j = i; j < l; j++) { int c = s[j]-'a'; if (f->p[c] == NULL) { ans ++ ; f->p[c] = new node(); } f = f->p[c]; } } printf("%d\n", ans); init->kill(); delete init; } return 0; }