process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("\n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// function main() { var q = parseInt(readLine()); var hackerRank; var char; for(var a0 = 0; a0 < q; a0++){ var s = readLine().toLowerCase(); hackerRank = { 'h': [], 'a': [], 'c': [], 'k': [], 'e': [], 'r': [], 'n': [] }; for(var i = 0, l = s.length; i < l; i++) { char = s[i]; if (hackerRank[char]) { hackerRank[char].push(i); } } determineHackerRankPresence(hackerRank); } function determineHackerRankPresence(hackerRank) { var chars = ['h', 'a', 'c', 'k', 'e', 'r', 'r', 'a', 'n', 'k']; var c; var currPosition, prevPosition = -1, doesContainHackerRank = true; for (var i = 0, l = chars.length; i < l; i++) { c = chars[i]; currPosition = hackerRank[c].splice(0, 1)[0]; while (currPosition !== undefined && currPosition < prevPosition) { currPosition = hackerRank[c].splice(0, 1)[0]; if (!currPosition) { break; } } doesContainHackerRank = currPosition !== undefined; if (!doesContainHackerRank) { break; } prevPosition = currPosition; } if (doesContainHackerRank) { console.log('YES'); } else { console.log('NO'); } } }