function findCriticalBit(a, b) {
  var i = 0,
      tmp;

  // Swapping so a is the shortest
  if (a.length > b.length) {
    tmp = b;
    b = a;
    a = tmp;
  }

  var l = a.length,
      mask;

  while (i < l) {
    if (a[i] !== b[i]) {
      mask = bitwise.criticalBit8Mask(
        a.charCodeAt(i),
        b.charCodeAt(i)
      );

      return (i << 8) | mask;
    }

    i++;
  }

  // Strings are identical
  if (a.length === b.length)
    return -1;

  // NOTE: x ^ 0 is the same as x
  mask = bitwise.criticalBit8Mask(b.charCodeAt(i));

  return (i << 8) | mask;
}
Helper returning the packed address of byte + mask or -1 if strings
are identical.

@param  {string} a      - First key.
@param  {string} b      - Second key.
@return {number}        - Packed address of byte + mask.