The eight points below are the vertices and the midpoints of the sides of a square. We would like to draw a number of circles through the points, in such a way that each pair of points lie on (at least) one of the circles. Determine the smallest number of circles needed to do this. [asy][asy] unitsize(1 cm); dot((0,0)); dot((1,0)); dot((2,0)); dot((0,1)); dot((2,1)); dot((0,2)); dot((1,2)); dot((2,2)); [/asy][/asy]