I'd go for C++, if you're really good at C++, picking up Java, C# & ObjC will be a matter of a couple days each. That and Python.
(Computer) languages should not inspire "puzzle books". Too often I'll see colleagues scratching their heads wondering why a piece of code works a certain way, or why something doesn't work the way it's supposed to.
Languages are a tool to get things done. The more time you spend lost in the entrails of a language, the more you're wasting your time.
It's not an ideal basis but there are worse languages to learn before coming to C#; it might even be easier for C++ programmers to move to C# and begin working comfortably than Java programmers.