Hmm so your two different character classes are each using a different Mapping Context ? In that case I get it.
Using node GetPlayerController may work but it’s a bit wonky - That node is very different as it is a non-contextual node, not related to the character the code is executed in. It is a generic node that will find and return the first playercontroller available on the running machine. So yeah it will find the playercontroller even if it has not possessed the character yet. However, as BeginPlay runs for every character in the World, you are adding as many mapping contexts to your player controller. So I wouldn’t be surprised if you run into issues later on.
You should probably use event ReceivePlayerController instead of BeginPlay to handle this properly.