I think it’s likely that the problem is extra spaces in your output. This will be hard to see just by looking at the output. There are various ways to overcome this, but within the structure you have, it might be best to form an output string per row rather than trying to print character by character.
For string input it’s often a good idea to remove any lurking whitespace using input().strip()
If you wanted a bit more general purpose code, you could just check if r*c != len(s):
and ignore the requirement for exactly 15 characters. In fact, even with the 15 characters specified, I would substitute that test for one of the tests you make.
You could also combine the two validity tests of course with if len(s) != 15 or r*c != 15:
(unless you wanted different error messages for different errors).
For extension, you might want to try turning input of