function solution(L1, L2) {
const lane1 = L1.split("");
const lane2 = L2.split("");
const accumulator = (acc, el) => (el === "x" ? ++acc : acc);
const topX = lane1.reduce(accumulator, 0);
const bottomX = lane2.reduce(accumulator, 0);
const lane1Memoi = getMemoi(lane1);
const lane2Memoi = getMemoi(lane2);
let res = Math.max(topX, bottomX);
for (let i = 1; i < lane1.length; i++) {
const topToBottom =
lane1Memoi[i - 1] + (lane2Memoi[lane2Memoi.length - 1] - lane2Memoi[i]);
const bottomToTop =
lane2Memoi[i - 1] + (lane1Memoi[lane1Memoi.length - 1] - lane1Memoi[i]);
res = Math.max(res, topToBottom, bottomToTop);
}
return res;
}