#include <iostream>
#include <cassert>
using namespace std;
int count(char* word1, int counter, int i) {
if (word1[i] != word1[i + 1]) {
return counter;
}
return count(word1, counter+1, i + 1);
}
void check_number() {
char word1[200];
char word2[200];
int counter = 1;
int i=0, j=0;
cin >> word1;
for (word1[i]; word1[i] != '\0'; i++) {
counter = count(word1, counter, i);
if (counter > 2) {
word2[j] = word1[i];
j++;
i += counter - 1;
if (counter < 10) {
word2[j] = '0' + counter;
j++;
}
else if (counter >= 10 && counter < 100) {
word2[j] = '0' + counter / 10;
j++;
word2[j] = '0' + counter % 10;
j++;
}
else if (counter >= 100) {
word2[j] = '0' + counter / 100;
j++;
word2[j] = '0' + (counter %100)%10;
j++;
word2[j] = '0' + counter %10;
j++;
}
counter = 1;
}
else {
word2[j] = word1[i];
j++;
counter = 1;
}
}
word2[j] = '\0';
cout << word2 << endl;
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
check_number();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2Fzc2VydD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgY291bnQoY2hhciogd29yZDEsIGludCBjb3VudGVyLCBpbnQgaSkgewoJaWYgKHdvcmQxW2ldICE9IHdvcmQxW2kgKyAxXSkgewoJCXJldHVybiBjb3VudGVyOwoJfQoJcmV0dXJuIGNvdW50KHdvcmQxLCBjb3VudGVyKzEsICBpICsgMSk7Cn0KCgp2b2lkIGNoZWNrX251bWJlcigpIHsKCWNoYXIgd29yZDFbMjAwXTsKCWNoYXIgd29yZDJbMjAwXTsKCWludCBjb3VudGVyID0gMTsKCWludCBpPTAsIGo9MDsKCWNpbiA+PiB3b3JkMTsKCWZvciAod29yZDFbaV07IHdvcmQxW2ldICE9ICdcMCc7IGkrKykgewoJCWNvdW50ZXIgPSBjb3VudCh3b3JkMSwgY291bnRlciwgaSk7CgkJaWYgKGNvdW50ZXIgPiAyKSB7CgkJCXdvcmQyW2pdID0gd29yZDFbaV07CgkJCWorKzsKCQkJaSArPSBjb3VudGVyIC0gMTsKCgkJCWlmIChjb3VudGVyIDwgMTApIHsKCQkJCXdvcmQyW2pdID0gJzAnICsgY291bnRlcjsKCQkJCWorKzsKCQkJfQoJCQllbHNlIGlmIChjb3VudGVyID49IDEwICYmIGNvdW50ZXIgPCAxMDApIHsKCQkJCXdvcmQyW2pdID0gJzAnICsgY291bnRlciAvIDEwOwoJCQkJaisrOwoJCQkJd29yZDJbal0gPSAnMCcgKyBjb3VudGVyICUgMTA7CgkJCQlqKys7CgkJCX0KCQkJZWxzZSBpZiAoY291bnRlciA+PSAxMDApIHsKCQkJCXdvcmQyW2pdID0gJzAnICsgY291bnRlciAvIDEwMDsKCQkJCWorKzsKCQkJCXdvcmQyW2pdID0gJzAnICsgKGNvdW50ZXIgJTEwMCklMTA7CgkJCQlqKys7CgkJCQl3b3JkMltqXSA9ICcwJyArIGNvdW50ZXIgJTEwOwoJCQkJaisrOwoJCQl9CgkJCWNvdW50ZXIgPSAxOwoJCX0KCQllbHNlIHsKCQkJd29yZDJbal0gPSB3b3JkMVtpXTsKCQkJaisrOwoJCQljb3VudGVyID0gMTsKCQl9Cgl9Cgl3b3JkMltqXSA9ICdcMCc7Cgljb3V0IDw8IHdvcmQyIDw8IGVuZGw7Cgp9CgoKaW50IG1haW4oKSB7CglpbnQgbjsKCWNpbiA+PiBuOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQljaGVja19udW1iZXIoKTsKCX0KCXJldHVybiAwOwp9Cg==