Yeah it's tricky!
Previously I used a KYC exchange (like Kraken) to deposit USD, then exchange for Litecoin (to minimise fees offboarding), then send the Litecoin to TradeOgre; to buy XMR.
With TradeOgre gone, and LocalMonero gone too, the cheap, private, secure options are limited.
I find option...