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=[9999999999]*(len(a)+1)
l[0]=0
for i in range(1,len(a)+1):
while(lm<i):
cost = 99999
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