#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct word_and_counter {
string word;
unsigned counter;
word_and_counter( string w= "" , int c= 1 ) {
word = w;
counter = c;
}
} ;
bool words_comparator( word_and_counter a, word_and_counter b) {
return a.word < b.word ;
}
bool counts_comparator( word_and_counter a, word_and_counter b) {
return a.counter > b.counter ;
}
int main( ) {
vector< word_and_counter> x;
for ( string s; cin >> s; ) {
auto it = std:: remove_if ( s.begin ( ) , s.end ( ) , :: ispunct ) ;
s.erase ( it, s.end ( ) ) ;
transform( s.begin ( ) , s.end ( ) , s.begin ( ) , :: tolower ) ;
x.push_back ( s) ;
}
sort( x.begin ( ) , x.end ( ) , words_comparator) ;
for ( int i= 1 ; i < x.size ( ) ; ++ i)
if ( x[ i] .word == x[ i- 1 ] .word ) {
x[ i] .counter + = x[ i- 1 ] .counter ;
x[ i- 1 ] .counter = 0 ;
}
sort( x.begin ( ) , x.end ( ) , counts_comparator) ;
for ( auto e: x)
if ( e.counter > 0 ) cout << e.word << ' ' << e.counter << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCB3b3JkX2FuZF9jb3VudGVyIHsKCXN0cmluZyB3b3JkOwoJdW5zaWduZWQgY291bnRlcjsKCXdvcmRfYW5kX2NvdW50ZXIoc3RyaW5nIHc9IiIsIGludCBjPTEpIHsKCQl3b3JkID0gdzsKCQljb3VudGVyID0gYzsKCX0KfTsKCmJvb2wgd29yZHNfY29tcGFyYXRvcih3b3JkX2FuZF9jb3VudGVyIGEsIHdvcmRfYW5kX2NvdW50ZXIgYikgewoJcmV0dXJuIGEud29yZCA8IGIud29yZDsKfQoKYm9vbCBjb3VudHNfY29tcGFyYXRvcih3b3JkX2FuZF9jb3VudGVyIGEsIHdvcmRfYW5kX2NvdW50ZXIgYikgewoJcmV0dXJuIGEuY291bnRlciA+IGIuY291bnRlcjsKfQoKaW50IG1haW4oKSB7Cgl2ZWN0b3I8d29yZF9hbmRfY291bnRlcj4geDsKCWZvcihzdHJpbmcgczsgY2luID4+IHM7ICkgewoJCWF1dG8gaXQgPSBzdGQ6OnJlbW92ZV9pZihzLmJlZ2luKCksIHMuZW5kKCksIDo6aXNwdW5jdCk7CiAgICAJcy5lcmFzZShpdCwgcy5lbmQoKSk7CiAgICAJdHJhbnNmb3JtKHMuYmVnaW4oKSwgcy5lbmQoKSwgcy5iZWdpbigpLCA6OnRvbG93ZXIpOwoJCXgucHVzaF9iYWNrKHMpOwoJfQoJc29ydCh4LmJlZ2luKCksIHguZW5kKCksIHdvcmRzX2NvbXBhcmF0b3IpOwoJZm9yKGludCBpPTE7IGkgPCB4LnNpemUoKTsgKytpKSAKCQlpZiAoeFtpXS53b3JkID09IHhbaS0xXS53b3JkKSB7CgkJCXhbaV0uY291bnRlciArPSB4W2ktMV0uY291bnRlcjsKCQkJeFtpLTFdLmNvdW50ZXIgPSAwOwoJCX0KCXNvcnQoeC5iZWdpbigpLCB4LmVuZCgpLCBjb3VudHNfY29tcGFyYXRvcik7Cglmb3IoYXV0byBlOiB4KSAKCQlpZiAoZS5jb3VudGVyID4gMCkgY291dCA8PCBlLndvcmQgPDwgJyAnIDw8IGUuY291bnRlciA8PCBlbmRsOwp9
stdin
SSB3b3VsZCBsaWtlIHRvIGtlZXAgdGhlIGFwcCBzaW1wbGUgYW5kIG9ubHkgc3VwcG9ydCBvbmUgcGllY2Ugb2YgdGV4dC4gSXQmcnNxdW87cyBraW5kYSBpbiB0aGUgYXBwIG5hbWUuIEhvd2V2ZXIsIHRoZSBhcHAgY29tZXMgd2l0aCBhIHNob3J0Y3V0IGFjdGlvbiB0byBjaGFuZ2UgdGhlIHRleHQsIHNvIHlvdSBjb3VsZCB1c2UgdGhlIFNob3J0Y3V0cyBhdXRvbWF0aW9uIHRvIGNoYW5nZSB0aGUgdGV4dCBkdXJpbmcgdGhlIGRheS4=
I would like to keep the app simple and only support one piece of text. It’s kinda in the app name. However, the app comes with a shortcut action to change the text, so you could use the Shortcuts automation to change the text during the day.