1 #include <iostream>
    2 #include <set>
    3 #include <string>
    4 #include <cctype>
    5 #include <sstream>
    6 #include <algorithm>
    7 #include <cassert>
    8 
    9 using namespace std;
   10 
   11 void cleanname(string &s)
   12 {
   13   string::iterator it;
   14 
   15   it = remove(s.begin(), s.end(), '\'');
   16   it = remove(s.begin(), it, '-');
   17   s.resize(it - s.begin());
   18 }
   19 
   20 bool solve(int id)
   21 {
   22   unsigned num, maxlen;
   23   string line;
   24 
   25   cin >> num >> maxlen;
   26   if (!num && !maxlen) return false;
   27 
   28   getline(cin, line);
   29 
   30   cout << "Case " << id << endl;
   31 
   32   set<string> usernames;
   33   for (unsigned i = 0; i < num; i++)
   34     {
   35       getline(cin, line);
   36       istringstream iss(line);
   37 
   38       string first, last, temp;
   39       iss >> first;
   40       while (iss >> temp)
   41         {
   42           last = temp;
   43         }
   44 
   45       cleanname(first);
   46       cleanname(last);
   47 
   48       string name;
   49       bool done = false;
   50       name += tolower(first[0]);
   51       for (unsigned int i = 0; i < last.length() && name.length() < maxlen;
   52            i++)
   53         {
   54           name += tolower(last[i]);
   55         }
   56 
   57       if (usernames.count(name) == 0)
   58         {
   59           usernames.insert(name);
   60           cout << name << endl;
   61           done = true;
   62         }
   63 
   64       for (int i = 1; i <= 9 && !done; i++)
   65         {
   66           string name2 = name;
   67           if (name2.length() == maxlen)
   68             {
   69               name2.erase(maxlen-1);
   70             }
   71           name2 += (char)('0'+i);
   72 
   73           if (usernames.count(name2) == 0)
   74             {
   75               usernames.insert(name2);
   76               cout << name2 << endl;
   77               done = true;
   78             }
   79         }
   80 
   81       for (int i = 10; i <= 99 && !done; i++)
   82         {
   83           string name2 = name;
   84           if (name2.length() == maxlen)
   85             {
   86               name2.erase(maxlen-1);
   87             }
   88           if (name2.length() == maxlen-1)
   89             {
   90               name2.erase(maxlen-2);
   91             }
   92 
   93           name2 += (char)('0'+ (i/10));
   94           name2 += (char)('0'+ (i%10));
   95 
   96           if (usernames.count(name2) == 0)
   97             {
   98               usernames.insert(name2);
   99               cout << name2 << endl;
  100               done = true;
  101             }
  102         }
  103 
  104       assert(done);
  105     }
  106 
  107 
  108   return true;
  109 }
  110 
  111 int main()
  112 {
  113   int id = 1;
  114   while (solve(id++))
  115     ;
  116 
  117   return 0;
  118 }
  119