rei = ["odadai", "odaiodai","ooooddddaaaaiiii","daioadiao"]
ptn = "odai"
def cntdf(s, pt):
n = len(pt)
csm = [0] * (n+1)
csm[0] = 1
for sch in s:
for i in reversed(range(n)):
if pt[i] == sch: csm[i+1] += csm[i]
dss = f'{s if len(s) < 50 else s[:25] + "..."}({len(s)}文字)'
print(dss,"-->", csm[n])
for s in rei:
cntdf(s, ptn)
for s in rei:
cntdf(s*1000, ptn)
CnJlaSA9IFsib2RhZGFpIiwgIm9kYWlvZGFpIiwib29vb2RkZGRhYWFhaWlpaSIsImRhaW9hZGlhbyJdCnB0biA9ICJvZGFpIgoKZGVmIGNudGRmKHMsIHB0KToKICAgIG4gPSBsZW4ocHQpCiAgICBjc20gPSBbMF0gKiAobisxKQogICAgY3NtWzBdID0gMQogICAgZm9yIHNjaCBpbiBzOgogICAgICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKG4pKToKICAgICAgICAgICAgaWYgcHRbaV0gPT0gc2NoOiBjc21baSsxXSArPSBjc21baV0KICAgIGRzcyA9IGYne3MgaWYgbGVuKHMpIDwgNTAgZWxzZSBzWzoyNV0gKyAiLi4uIn0oe2xlbihzKX3mloflrZcpJwogICAgcHJpbnQoZHNzLCItLT4iLCBjc21bbl0pCgoKZm9yIHMgaW4gcmVpOgogICAgY250ZGYocywgcHRuKQpmb3IgcyBpbiByZWk6CiAgICBjbnRkZihzKjEwMDAsIHB0bikKCg==