The main bottleneck of the naive algorithm is finding new Viterbi Model 1 word alignments every time we change the spans.
we propose an iterative approach to compute the Viterbi word alignments for IBM Model 1 using dynamic programming.