How about trying the "For" iterator, as described in the documentation link. It seems like it would work.
Set the From Value To 1
Set the To Value to 20
Set the By value to 1
You would want to tie the numeric value of each iteration to the raw path of the input file (starting with a pre-named "your path\map1.asc") using inline Variable substitution. The model should dynamically draw the file by its full path, not as a fixed feature layer.
You would then tell the model to name the output file with the numeric value of the iteration + 1, (yourpath\map2.asc)
On the following iteration, the input file would be the previous iteration's output file (yourpath\map2.asc) and the output file would be (yourpath\map3.asc)
This would repeat itself 20 times, with (yourpath\map21.asc) being the desired output.
Hopefully these ideas help. I'm more familiar with python scripting. With modelbuilder, sometimes doing what you think should be a simple task can turn out to be a real headache.