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