while(i < this.puzzleWords.size())
you are trying each word once.
add another while loop inside your existing while loop, defined to end when the position is found:
while(i < this.puzzleWords.size()) {
while(positionNotFound){
if(positionFound){
break;
}
}
}