小明最近迷上一個遊戲叫字串接龍,遊戲會給你許多字串,只要將字串按照順序接起來,就可以獲得遊戲加分,然而遊戲有時間限制,為了節省時間,小明會從當前接龍到一半的字串結尾找到一段與下一個字串開頭的最長共同子字串,透過只打出下一個字串剩餘的部分完成接龍。
舉例來說,假設當前字串為 aabbc 且下一個字串是 bbcab,那麼 bbc 的部分為前者結尾與後者開頭的最長共同子字串,故小明只需要多打 ab 就能完成第二個字串的接龍,得到字串 aabbcab。
接著,當前字串為 aabbcab,如果此時下一個字串是 abbcaba,因為 abbcab 的部分為當前字串結尾與後者開頭的最長共同子字串,注意到儘管這個共同部分比第二個字串長,小明還是能沿用這段結尾,故小明只需要再多打 a 就能完成第三個字串的接龍,得到字串 aabbcaba。
為了拿到新高分,小明希望你能幫他找出最少必須打哪些字。
輸入第一行為一個正整數 $N$,代表字串的數量。
接下來 $N$ 行每行都包含一個只由小寫英文字母所組成的字串 $s_i$。
輸出一行,代表小明最少需要打那些字。
3 ab bba bbac
abbac
2 abba abbac
abbac
| No. | Testdata Range | Constraints | Score |
|---|---|---|---|
| 1 | 0~1 | 範例測資 | 0 |
| 2 | 0~29 | 無額外限制 | 100 |