The calculated distance (air line) between Haddington and Inverkeithing is approximately 24 miles respectively 39 kilometers.
By car or train, the actual journey to Inverkeithing is certainly longer, as only the direct route (as the crow flies) between Haddington and Inverkeithing has been calculated here.
Air line (approximately)
39 kilometers
21 nautical miles