Should be free if you hold some sort of card to prove you have a medical problem. Otherwise you should pay. Somebody needs to clean and maintain public toilets.
People would soon complain if the toilets were not clean or maintained.
So yes a small charge to spend a penny is a must.