Given an n*m grid with n > m.

Orient the grid so n is its width. Divide the grid into two portions, an m*m square on the left and an (n-m)*m rectangle on the right. Count the squares that have their upper right-hand corners in the m*m square. There are m^2 of size 1*1, (m-1)^2 of size 2*2, ... up to 1^2 of size m*m. Now look at the n-m columns of lattice points in the rectangle on the right, in which we find upper right-hand corners of squares not yet counted. For each column we count m new 1*1 squares, m-1 new 2*2 squares, ... up to 1 new m*m square.

- Combining all these counts in summations
m m

total = sum i^2 + (n - m) sum i

i=1 i=1

(2m + 1)(m + 1)m (n - m)(m + 1)m

= ---------------- + ---------------

6 2

= (3n - m + 1)(m + 1)m/6

-- David Karr