How to allow customers to input a text as a product variation *and* charge per character?

I have been working with a plugin called TM Extra Product Options and I am fairly sure you could achieve your goals using that. It isn’t the prettiest plugin from a UI perspective, but it has a lot of functionality and good support if you use their forums.

You could use a select box for number of characters and then set a conditional field to appear when they make a choice in the characters select box.

Good luck!