3.3V to 5V async serial comms with the fewest number of components

I have a 3.3V microcontroller that communicates with a 5V microcontroller over async serial (2 wire UART) via a cable up to 3M in length. The cable is a standard USB 2.0 cable using D- and D+ for RX and TX.

I want to do this at 1M baud and the fewest number of components possible. Cost is also a factor. The level translation scheme needs to be capable of driving the serial link, i.e. supports termination. The 5V microcontroller, an ATtiny, cannot detect 3.3V as a logic high, it's threshold voltage is 0.7xVCC or 3.5V.

How can I do this with as few components and as little board space as possible?

Note this is not a duplicate of this question, it's asking what the best approach is rather than for a component recommendation.