I recommend you just let the client do it manually.
From a cost perspective, you have luck on your side this time:
- You expect no more than 100 users/day, possibly as low as 10/day
- You have an authentication system, meaning bans can be permanent
- You have a client that is happy to delete names (infrequently)
The reality is, the 10 minutes it will take for somebody to look over the top leaderboards and ban any extreme names - will simply be cheaper and more reliable, than you spending time on an engineering solution (which will have problems).
With such a low playercount, it's unlikely this would need done often - even once per week during peak is likely to be enough.
But I've got plenty of time, I can do something right?
Wrong.
You can very easily do something wrong, that is more damaging to the client's brand than doing nothing at all.
Want to use Regex to catch all the bad names? Better hope you get it perfectly right, and also filter all false-positives from multiple databases of international real-people names:
https://en.wikipedia.org/wiki/Scunthorpe_problem
And even if you do manage the above successfully, players are not dumb - they will very easily find a way around your system to create an equally offensive name that you aren't catching.
At a minimum, you have just added even more work in keeping these rules updated, compared with the small manual work of just looking at the highest scores and banning.
No but seriously, this is a kids game - the client has made it clear there can be NO TOLERANCE for offensive names. There has to be something!
If this is honestly the case, and you cannot tolerate offensive names at all. The only realistic solution is just not to let your players create their own names.
This is the solution you'll find on almost all children's gaming websites, such as Cartoon Network.
Instead of giving a blank input, you give a selection of premade "name parts".
For example:
An adjective, such as "Awesome", "Fantastic", "Cunning"
A middle, such as "Bearded", "Laser-eye", "Pirate"
A noun, such as "Master", "Winner", "Detector"
Which restricts display names to things like "Awesome Pirate Master".
Do also give a quick consideration of what wordlists you are using. There is no point implementing this system if the user is able to fiddle names to get things that still sound offensive or dirty.
Of course, there is the possibility for duplicates as well - but you can either write this off (3 lists of 100 words, already gives 1 million possible names) due to how few players you have, or if needed - you can still check that nobody else has the name on registration.
Realistically, this may be the most effective solution if you are seriously worried about bad names. But you do need to do a cost analysis, and find whether even making this system is really worth it compared to simple manual checks.