function solution(str1, str2) {
var answer = 0;
const getSub = str => {
const subset = {}
for(let i=0; i<str.length-1; i++){
const sub = str.slice(i, i+2).toUpperCase();
if(/^[A-Za-z]+$/.test(sub)){
subset[sub] = subset[sub] ? subset[sub] + 1 : 1;
}
}
return subset;
}
const subset1 = getSub(str1);
const subset2 = getSub(str2);
if(Object.keys(subset1).length===0 && Object.keys(subset2).length===0) return 65536;
const intersect = {}
const union = {...subset1}
Object.keys(subset2).forEach(set => {
if(subset1[set]){
intersect[set] = Math.min(subset1[set], subset2[set]);
union[set] = Math.max(subset1[set], subset2[set]);
}else{
union[set] = subset2[set];
}
})
return Math.floor(Object.values(intersect).reduce((acc, value) => acc + value, 0) / Object.values(union).reduce((acc, value) => acc + value, 0) * 65536);
}