import java.util.*;
public class Words {
public String countWords
(List
<String
> lines
) { StringBuilder result = new StringBuilder();
HashMap
<String, Integer
> wordsCount
= new HashMap
<>(); {
line
=line.
toLowerCase(Locale.
ROOT); line = line.replaceAll("[^\\p{L}\\p{Nd}]+", " ");
String[] words
= line.
split(" "); if( wordsCount.containsKey(word)){
wordsCount.put(word, wordsCount.get(word)+1 );
}else{
wordsCount.put(word, 1);
}
}
TreeMap
<String, Integer
> sortedMap
= new TreeMap
<>(wordsCount
); for (Map.
Entry<String, Integer
> entry
:sortedMap.
entrySet() ) { if ( (entry.getValue()>9) && (entry.getKey().length()>3 ) ){
result.append(entry.getKey() + " - " + entry.getValue() + "\r\n");
}
}
}
return (result.toString());
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIFdvcmRzIHsKCiAgICBwdWJsaWMgU3RyaW5nIGNvdW50V29yZHMoTGlzdDxTdHJpbmc+IGxpbmVzKSB7CiAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwoKICAgICAgICBIYXNoTWFwPFN0cmluZywgSW50ZWdlcj4gd29yZHNDb3VudCA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICBmb3IgKFN0cmluZyBsaW5lIDogbGluZXMpCiAgICAgICAgewogICAgICAgICAgICBsaW5lPWxpbmUudG9Mb3dlckNhc2UoTG9jYWxlLlJPT1QpOwogICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlQWxsKCJbXlxccHtMfVxccHtOZH1dKyIsICIgIik7CiAgICAgICAgICAgIFN0cmluZ1tdIHdvcmRzID0gbGluZS5zcGxpdCgiICIpOwogICAgICAgICAgICBmb3IgKFN0cmluZyB3b3JkOiB3b3JkcykgewogICAgICAgICAgICAgICAgICAgIGlmKCB3b3Jkc0NvdW50LmNvbnRhaW5zS2V5KHdvcmQpKXsKICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNDb3VudC5wdXQod29yZCwgd29yZHNDb3VudC5nZXQod29yZCkrMSApOwogICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICB3b3Jkc0NvdW50LnB1dCh3b3JkLCAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBUcmVlTWFwPFN0cmluZywgSW50ZWdlcj4gc29ydGVkTWFwID0gbmV3IFRyZWVNYXA8Pih3b3Jkc0NvdW50KTsKICAgICAgICAgICAgZm9yIChNYXAuRW50cnk8U3RyaW5nLCBJbnRlZ2VyPiBlbnRyeSA6c29ydGVkTWFwLmVudHJ5U2V0KCkgKSB7CiAgICAgICAgICAgICAgICBpZiAoIChlbnRyeS5nZXRWYWx1ZSgpPjkpICYmIChlbnRyeS5nZXRLZXkoKS5sZW5ndGgoKT4zICkgKXsKICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGVudHJ5LmdldEtleSgpICsgIiAtICIgKyBlbnRyeS5nZXRWYWx1ZSgpICsgIlxyXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gKHJlc3VsdC50b1N0cmluZygpKTsKICAgIH0KCn0=