My best advice: have one of the networks redesigned to a different address space. I hope your example is just for illustration, but I've seen 192.168.0.x in use in many places. Address space for private networks is huge, but people tend to choose always the same 3 networks.
Now, if network a or b are not under your control, you will have to use an address space of your own, like 172.27.14.0/24, to communicate with 192.168.10.0/24 in site a (for example). In the policy from your LAN to the VPN interface, you need to apply destination NAT (1:1 if possible), and NAT back onto your address space upon reception. This is well documented in some KB articles ("Site-to-Site VPN with subnet overlap").
Feasable, but a nuisance. If you use 1:1 NAT, then at least the last byte in a /24 is identical, which might help addressing remote hosts. Of course, setting up your own DNS for remote names and local addresses is useful.
"Kernel panic: Aiee, killing interrupt handler!"