It might seem a bit unreasonable to give an example implementation that differs a lot without adding step-by-step explanation. But this way, you're encouraged to read documentation. And I'm sure you learned a lot more than you wanted to :).
++ vs lbh qrpbqrq guvf hfvat n ge va Crey :)
Nabgure bar vs lbh qvq fb jvgubhg ernqvat n znahny svefg.
-- vs lbh hfrq OFQ pnrfne ;)
- Whreq