JSFiddle - React, Tailwind, and code Playground

HTML

Word directory: <span id="spWords"></span><br>
Word size: <input id="tbWordSize"><br> 
Missing letters: <input id="tbLetters"><br>
<button id="gobutton">GO</button><br>
<div id="Info" style="width:95%"></div>
<pre id="Output" style="width:95%; height: 600px; overflow: auto; border: 1px solid #000"></pre>

CSS

body { font-family: sans; }

JavaScript

var words;
var score=0;

function loadWords(e) {
    words = e.target.responseText.match(/[a-z]+/g);
    console.log( "Got the words file:  " + words.length);  
    document.getElementById('spWords').innerHTML = 'Words: ' + words.length;
};
function bitcount(u) {
    for (var n=0; u; score++, ++n, u=u&(u-1));
	return n;
}

function elab(word, mask, wordSize, letters, store)
{
    var chars, p, bit;
    for (; --mask;) {
	score++;
	if (bitcount(mask) == letters)
	{
            chars='';
            for (bit=1, p = 0; p < wordSize; p++, bit+=bit)
            {
		score++;
		chars += bit & mask ? '-' : word[p];
            }
            if (!store[chars]) store[chars] = [];
            store[chars].push(word);
	};
    };
}   
function go(e) {
    document.getElementById('Output').innerHTML = '...';
    document.getElementById('Info').innerHTML = '...running...';
    store = {};
    
    setTimeout(
	function() {
	    var tstop, tstart = new Date;
	    var wordSize = document.getElementById('tbWordSize').value;
	    var letters = document.getElementById('tbLetters').value;
	    var result, found, i, mask;
	    console.log(tstart);
	    console.log(wordSize, letters, words.length);
	    
	    mask = 1<<wordSize;
	    for (i = 0; i < words.length; i++)
	    {
		score++;
		if (words[i].length == wordSize)
		    elab(words[i], mask, wordSize, letters, store);
	    }
	    keys = Object.keys(store);
	    keys.sort(function(a,b) {
			  score++;
			  return store[b].length - store[a].length;});
	    tstop = new Date;
	    console.log(tstop);
	    console.log('Time to scan (ms) '+ (tstop-tstart));
	    
	    found = 0;
	    result = keys.map(
		function(key) {
		    score++;
		    return store[key][1] ? ( found++, key + ':' +
					     store[key].length + ':' + 
					     store[key] + '\n'): '';});
	    
	    document.getElementById('Output').innerHTML = result.join('');
	    tstop = new Date;
	    console.log(tstop);
	    console.log('Total ' + found + ' time (ms) ' +...