docs: function (word, puzzle, x, y, fnGetSquare) {
              var overlap = 0;
              // traverse the squares to determine if the word fits
              for (var i = 0, len = word.length; i < len; i++) {
                  var next = fnGetSquare(x, y, i), square = puzzle[next.y][next.x];
                  // if the puzzle square already contains the letter we
                  // are looking for, then count it as an overlap square
                  if (square === word[i]) {
                      overlap++;
                  }
                  else if (square !== '') {
                      return -1;
                  }
              }
              // if the entire word is overlapping, skip it to ensure words aren't
              // hidden in other words
              return overlap;
          }