Just curious...why do you want until here to do the substitution rather than writing O(1) for c in `arg = c*arg`?