Hi,
What you need here is a base class for your pawn (and/or controllers) which will take care of your general functionalities such as input handling. In technical terms, it’s called inheritance. Inheritance, along with polymorphism, are very powerful features of any object-oriented programming language such as C++. Blueprints support these features as well, putting a powerful toolkit at your disposal. Please refer to my other answers (link1, link2, link3) where questioners had similar issues (You can think of these questions as examples to better understand these concepts).
In your case, what you would need to do is to create a base class based on character. Let’s call it MyBaseCharacter. Next, implement all your base input handling, movement functionalities, etc. that are common between your 3 types of pawns. You can also make common variables in this parent class as well and then change them in your pawn classes.
Now using this parent MyBaseCharacter class, right click on it and create new child blueprint based on it. This will be a unique child that will have access to its parent methods and properties. You can create as many children as you want and make an inheritance chain as deep as you want.
Having a parent that hold common functions and interfaces, you can take advantage of polymorphism here and pass your child classes around using their parent base class MyBaseCharacter as the argument type. You wouldn’t need to cast to a specific child each time, instead, you would use this parent and call its method which will link to the child and call the child method automatically for you (polymorphism again!). Definitely check those 3 other answers, especially the one about AI and behavior tree where I show how polymorphism works for that question.
Hope this helps!