Notes 19 - dynamic programming