I was thinking about FPE specifically for numbers, CC, phone, SS #, etc. and I thought of some small "optimization" that could be implemented. Can I validate the string length after each round in the Feistel network, and repeating a round with the same tweak if the data is invalid, and continue until a set # of tweaks/successful rounds have been done.
For decryption, it would be much the same, since any invalid round could simply take the tweak of the preceding successful round.
Is there any downside to this approach (ie. security flaws, does not actually optimize run time, etc.)?