Here is the answer with
6 circles.
as trial and error:
I wrote a code to find a better option and I got
5
as below graph
another solution:
I believe this is optimal.
Note: My code works by generating tens of thousands of imaginary circles of all different sizes across the map to see which states they touch, and then it uses a Constraint Programming solver to pick the absolute smallest handful of those circles that perfectly touches every state exactly one time.


