class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        r = []
        for i in range(len(grid)):
            r.append([])
        for i , l in enumerate(grid):
            for j, num in enumerate(l):
                if i == 0 and j == 0:
                    r[i].append(num)
                    continue
                if i == 0:
                    r[i].append(num + r[i][j - 1])
                    continue
                if j == 0:
                    r[i].append(num + r[i - 1][0])
                    continue
                r[i].append(min(r[i - 1][j], r[i][j - 1]) + num)
        width = len(grid[0])
        height = len(grid)
        return r[height - 1][width - 1]