Where should be Pawn action/movements inputs handling?

I’m new at UE game development and I’m struggling to understand something about Controller and Pawn.
If I understood right the UE architecture, controller are representing the player in case PlayerController, AI in case of AIController and tells to the possessed pawns what to do depending on the context (action, AI behavior,…).
Hence, it seems logical, in the case of PlayerController, to handle inputs in the controller and call a Pawn function associated to the given input. But in many tutorials, even officials ones in the doc, input handling is in the pawn itself.

Also, let’s say, I have two kinds of pawn that can be possesed in the same level at any time and let’s say these pawns doesn’t have the same gameplay at all with very différent functions.
If I want to put all input handling in the controller, that shouldn’t be changed during a level if I read well, I should have a state machine to know the kind of pawn I possess and so on what gameplay apply. This is possible but it doesn’t seem practical to maintain when we want add another gamplays later.

So my is: should I put the input handling for pawn specific gameplay in its own class?

When I searched for an answer, I read contradictory answers depending on who gave the answer. Some peoples said to put it in the pawn. Some others said to put it in controller for design reason (as a pawn is an in-game representation class, it doesn’t care about input) or to avoid problems in multiplayer games. This is why I’m confused and don’t really know what design I should follow.

Also, this leads me to another question: Will I have the same problem with AI if I wan’t to give the ability to an AI to change its possessed pawn?

I hope I’ve been clear enough in my question.
Thank you in advance for your answers