how to start with dynamic programming