When the size of the program to be execute is bigger than main memory, than we can divide the program into modules, and then we can execute those modules independently (the modules size should be such that, the module+overlay driver can be stored in main memory) when one module finished we can load another by using overlay driver.
In this question to run the program we need 14 kb as it's maximum module size.
Difference between overlay and virtual memory is, virtual memory is taken care by OS (user dont need to write any software like overlay driver) whereas in overlay, user write the overlay driver so that we can run a process whose size is bigger than main memory.