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