__Solution to problem on slide 4____:__

__This is a dynamic programming (dp) problem where you can store the minimum cost to get to each point and use those minimum costs to find the next minimum cost etc. Here is my solution which runs in O(NM) time where N and M are sides of the grid.__

```
class Solution(object):
def minPathSum(self, grid):
n = len(grid)
m = len(grid[0])
min_dist = [[101*200 for i in range(m)] for i in range(n)]
min_dist[0][0] = grid[0][0]
for i in range(0,n):
for j in range(0,m):
if i>0:
min_dist[i][j] = min(min_dist[i][j],min_dist[i-1][j]+grid[i][j])
if j>0:
min_dist[i][j] = min(min_dist[i][j],min_dist[i][j-1]+grid[i][j])
return min_dist[n-1][m-1]
```

There is no homework for the next 2 weeks. Enjoy!