All of them. Programming is not about the languages, it's about understanding how the languages work. Once you understand that, you can transfer the knowledge and learn new languages fairly quickly. The programming concepts you need to know are:
Assembler code and how compiled code translates into assembler.
Object oriented languages (C++, C#, Java, etc.)
Purely functional languages (Haskell, F#, Scala, etc.)
The difference between how languages are interpreted by a computer and how compilation and linking works, especially in C and C++. Also
Interpreted languages (Perl, Python, Ruby, PhP, etc.)
Byte code interpreted languages (Java, Python, etc.)
Scripting languages (Bash, Javascript, etc.)
That's just for learning the actual languages. You should also learn concepts and frameworks to understand how they all work.
Programming patterns.
Model-View-Controller frameworks (Rails, Grails, Django, Griffon)
GUI programming (TK, wxWidgets, QT)
Web development (Javascript, JBoss, Enterprise Java Beans, Pylons, PhP, node.js)
Graphics programming (Unity, OpenGL, DirectX)