TADM2E 8.13
From Algorithm Wiki
``` a=raw_input() # the input string m=raw_input().split(" ") # the set of tokens separated by space n=len(m) k=int(raw_input()) # the maximum length of the token l=[float("inf")]*(len(a)+1) l[0]=0 for i in range(1,len(a)+1):
lm = 0 while(lm<I): cost = float("inf") if a[lm:i] in m: cost=l[lm]+1 if cost < l[i] : l[i] = cost lm=lm+1
print(l[-1]) ```
Python Based implementation