Minimum Number of Substrings From a String Needed to Piece Together Another String
Difference between en4 and en5, changed 7 character(s)
Given two non-empty strings _A_ and _B_ composed of lowercase Latin letters, what is the minimum number of substrings of _A_ needed to form string _B_? The lengths of _A_ and _B_ are at most 100000. If the task is not possible for a given input, output a rogue value (a.k.a. -1).↵

I was thinking about solving this with an O(N^2) DP
 method, but that does not fit into the time limit of 5 seconds.↵

Please help, and thanks in advance!↵

EDIT: Note that chosen substrings can overlap. I put some cases below.↵

Input #1:↵
abcbcd↵
abcd↵

Output #1:↵
2↵

Input #2:↵
iamsmart↵
iamdumb↵

Output #2:↵
-1↵

Input #3:↵
asmallmallinmalta↵
atallmallinlima↵

Output #3:↵
5↵

Explanations: "abcd" = "ab" + "cd", no "d"s in the first string of Input 2, "atallmallinlima" = "a" + "ta" + "llmallin" + "li" + "ma"

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en5 English vamaddur 2017-07-11 17:30:06 7 Tiny change: ' O(N^2) DP, but that' -> ' O(N^2) DP method, but that'
en4 English vamaddur 2017-07-11 11:20:55 6
en3 English vamaddur 2017-07-11 11:19:40 6
en2 English vamaddur 2017-07-11 11:18:52 371
en1 English vamaddur 2017-07-11 10:36:28 500 Initial revision (published)