CF1654B Prefix Removals
Description
You are given a string $ s $ consisting of lowercase letters of the English alphabet. You must perform the following algorithm on $ s $ :
- Let $ x $ be the length of the longest prefix of $ s $ which occurs somewhere else in $ s $ as a contiguous substring (the other occurrence may also intersect the prefix). If $ x = 0 $ , break. Otherwise, remove the first $ x $ characters of $ s $ , and repeat.
A prefix is a string consisting of several first letters of a given string, without any reorders. An empty prefix is also a valid prefix. For example, the string "abcd" has 5 prefixes: empty string, "a", "ab", "abc" and "abcd".
For instance, if we perform the algorithm on $ s = $ "abcabdc",
- Initially, "ab" is the longest prefix that also appears somewhere else as a substring in $ s $ , so $ s = $ "cabdc" after $ 1 $ operation.
- Then, "c" is the longest prefix that also appears somewhere else as a substring in $ s $ , so $ s = $ "abdc" after $ 2 $ operations.
- Now $ x=0 $ (because there are no non-empty prefixes of "abdc" that also appear somewhere else as a substring in $ s $ ), so the algorithm terminates.
Find the final state of the string after performing the algorithm.
Input Format
The first line contains a single integer $ t $ ( $ 1 \le t \le 10^4 $ ) — the number of test cases.
This is followed by $ t $ lines, each containing a description of one test case. Each line contains a string $ s $ . The given strings consist only of lowercase letters of the English alphabet and have lengths between $ 1 $ and $ 2 \cdot 10^5 $ inclusive.
It is guaranteed that the sum of the lengths of $ s $ over all test cases does not exceed $ 2 \cdot 10^5 $ .
Output Format
For each test case, print a single line containing the string $ s $ after executing the algorithm. It can be shown that such string is non-empty.
Explanation/Hint
The first test case is explained in the statement.
In the second test case, no operations can be performed on $ s $ .
In the third test case,
- Initially, $ s = $ "bbbbbbbbbb".
- After $ 1 $ operation, $ s = $ "b".
In the fourth test case,
- Initially, $ s = $ "codeforces".
- After $ 1 $ operation, $ s = $ "odeforces".
- After $ 2 $ operations, $ s = $ "deforces".