Universal Cup Judging System

Universal Cup

时间限制: 3 s 内存限制: 2048 MB 总分: 100 难度: [显示] 可 Hack ✓
统计

Little Cyan Fish mag die Theorie der Zeichenketten sehr. Heute lädt Little Cyan Fish dich ein, gemeinsam mit ihm menschliche Spitznamen weiter zu untersuchen.

Im Universum von Little Cyan Fish kann ein menschlicher Spitzname als eine Zeichenkette dargestellt werden, die ausschließlich aus lateinischen Kleinbuchstaben (a bis z) besteht. Beispielsweise sind „qingyu“ und „xiuga“ menschliche Spitznamen, „Abacde“ jedoch nicht.

Little Cyan Fish betrachtet einen Namen $s$ genau dann als ein Lyndon-Wort, wenn $s$ lexikographisch kleiner$^*$ ist als jedes echte Suffix$^\dagger$ $t$ von $s$. Beispielsweise ist „abacde“ ein Lyndon-Wort, aber „qingyu“ ist kein Lyndon-Wort (da es nicht lexikographisch kleiner als sein echtes Suffix „ingyu“ ist).

Nun gibt dir Little Cyan Fish einen menschlichen Spitznamen $s$ der Länge $n$. In einer Operation kannst du eine Position auswählen und das dortige Zeichen durch einen beliebigen lateinischen Kleinbuchstaben ersetzen. Bestimme die minimale Anzahl an Operationen, die nötig sind, um $s$ in ein Lyndon-Wort umzuwandeln.

$^*$ Eine Zeichenkette ist lexikographisch kleiner als eine andere Zeichenkette, wenn sie ein echtes Präfix der anderen Zeichenkette ist oder wenn ihr Zeichen an der ersten Position, an der sich die Zeichenketten unterscheiden, im Alphabet früher vorkommt.

$^\dagger$ Ein echtes Suffix ist ein nicht-leeres Suffix, das nicht gleich der ursprünglichen Zeichenkette ist. Beispielsweise hat „qqoj“ $3$ echte Suffixe, nämlich „j“, „oj“ und „qoj“.

Eingabe

Es gibt mehrere Testfälle. Die erste Zeile der Eingabe enthält eine einzelne ganze Zahl $T$ ($1 \le T \le 10^4$), die die Anzahl der Testfälle angibt.

Für jeden Testfall enthält die erste Zeile eine einzelne ganze Zahl $n$ ($1 \le n \le 3000$). Die zweite Zeile enthält eine Zeichenkette $s$ der Länge $n$, die ausschließlich aus lateinischen Kleinbuchstaben besteht.

Es wird garantiert, dass die Summe von $n^2$ über alle Testfälle $9 \times 10^6$ nicht überschreitet.

Ausgabe

Gib für jeden Testfall eine einzelne Zeile mit einer einzelnen ganzen Zahl aus, die die minimale Anzahl an Operationen angibt, die nötig sind, um $s$ in ein Lyndon-Wort umzuwandeln.

Beispiele

Eingabe 1

4
4
abac
4
aaaa
4
bbaa
5
bbaaa

Ausgabe 1

0
1
2
3

Hinweis

Im ersten Beispiel-Testfall ist die Zeichenkette bereits ein Lyndon-Wort, sodass keine Operation erforderlich ist.

Im zweiten Beispiel-Testfall kann Little Cyan Fish das letzte Zeichen in b ändern und erhält so aaab.

Im dritten Beispiel-Testfall kann er das erste und das letzte Zeichen in a bzw. c ändern und erhält so abac. Eine einzige Operation reicht nicht aus.

Im vierten Beispiel-Testfall kann er die ersten beiden Zeichen in a und das letzte Zeichen in b ändern und erhält so aaaab. Es ist unmöglich, dies in weniger als drei Operationen zu erreichen.

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#3006EditorialOpenNew Editorial for Problem #22878AnonymousView

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.