/**
* Check if a string contains any character appearing exactly `count` times
* @param {string} line - The input string to be checked
* @param {number} [charCount=2] - The required number of occurrences for a character to be considered
* @returns {boolean} - True if any character appears exactly `charCount` times, false otherwise
*/
function hasExactChars(line = '', charCount = 2) {
// Count the occurrences of each character in the line
const charCounts = [...line].reduce(
(acc, char) => ({ ...acc, [char]: (acc[char] || 0) + 1 }),
{}
);
// Check if any character has the required count of occurrences
return Object.values(charCounts).some((count) => count === charCount);
};
// Read input line by line using `readline` function
// Check if each line has any character appearing exactly twice, and print it if so
while (line = readline()) {
if (hasExactChars(line, 2)) {
print(line);
}
}
LyoqCiAqIENoZWNrIGlmIGEgc3RyaW5nIGNvbnRhaW5zIGFueSBjaGFyYWN0ZXIgYXBwZWFyaW5nIGV4YWN0bHkgYGNvdW50YCB0aW1lcwogKiBAcGFyYW0ge3N0cmluZ30gbGluZSAtIFRoZSBpbnB1dCBzdHJpbmcgdG8gYmUgY2hlY2tlZAogKiBAcGFyYW0ge251bWJlcn0gW2NoYXJDb3VudD0yXSAtIFRoZSByZXF1aXJlZCBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgZm9yIGEgY2hhcmFjdGVyIHRvIGJlIGNvbnNpZGVyZWQKICogQHJldHVybnMge2Jvb2xlYW59IC0gVHJ1ZSBpZiBhbnkgY2hhcmFjdGVyIGFwcGVhcnMgZXhhY3RseSBgY2hhckNvdW50YCB0aW1lcywgZmFsc2Ugb3RoZXJ3aXNlCiAqLwpmdW5jdGlvbiBoYXNFeGFjdENoYXJzKGxpbmUgPSAnJywgY2hhckNvdW50ID0gMikgewogICAgLy8gQ291bnQgdGhlIG9jY3VycmVuY2VzIG9mIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBsaW5lCiAgICBjb25zdCBjaGFyQ291bnRzID0gWy4uLmxpbmVdLnJlZHVjZSgKICAgICAgICAoYWNjLCBjaGFyKSA9PiAoeyAuLi5hY2MsIFtjaGFyXTogKGFjY1tjaGFyXSB8fCAwKSArIDEgfSksCiAgICAgICAge30KICAgICk7CgogICAgLy8gQ2hlY2sgaWYgYW55IGNoYXJhY3RlciBoYXMgdGhlIHJlcXVpcmVkIGNvdW50IG9mIG9jY3VycmVuY2VzCiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhjaGFyQ291bnRzKS5zb21lKChjb3VudCkgPT4gY291bnQgPT09IGNoYXJDb3VudCk7Cn07CgovLyBSZWFkIGlucHV0IGxpbmUgYnkgbGluZSB1c2luZyBgcmVhZGxpbmVgIGZ1bmN0aW9uCi8vIENoZWNrIGlmIGVhY2ggbGluZSBoYXMgYW55IGNoYXJhY3RlciBhcHBlYXJpbmcgZXhhY3RseSB0d2ljZSwgYW5kIHByaW50IGl0IGlmIHNvCndoaWxlIChsaW5lID0gcmVhZGxpbmUoKSkgewogICAgaWYgKGhhc0V4YWN0Q2hhcnMobGluZSwgMikpIHsKICAgICAgICBwcmludChsaW5lKTsKICAgIH0KfQo=