#include<bits/stdc++.h>
using namespace std;
struct tfz{
  char E[65];
  char F[26],L[26];
  int l1,l2,l3;
}I[2005],O[2005];
int v[2005][2];
int i,j,k,n,m,s1=0,s2=0;
string S;
bool Checkc(char c)
{
  if(c>='a'&&c<='z') return true;
  if(c>='A'&&c<='Z') return true;
  return false;
}
int GG(char c)
{
  if(c>='a'&&c<='z') return c-'a';
  return c-'A';
}
bool Pipei(int x,int y)
{
   int i,j,k;
   int l1=I[x].l1,l2=I[x].l2,l3=I[x].l3;
   if(I[x].l3==O[y].l3)
   {
      for(i=1;i<=l3;i++)
      {
      if(Checkc(I[x].E[i])&&Checkc(O[y].E[i]))
      { j=GG(I[x].L[i]);k=GG(O[y].L[i]);
         if(j!=k) break;
      }
       else if(I[x].E[i]!=O[y].E[i])break;
       }
       if(i>O[y].l3) return true;
   }
   if(I[x].l1==O[y].l1&&I[x].l2==O[y].l2)
   {
     for(i=1;i<=l1;i++)
      { j=GG(I[x].L[i]);k=GG(O[y].L[i]);
         if(j!=k) break;
        if(I[x].F[i]=='-'||O[y].F[i]=='-')
         if(I[x].F[i]!=O[y].F[i]) break;
         j=GG(I[x].F[i]);k=GG(O[y].F[i]);
         if(j!=k) break;
      }
      if(i<=l1) return false;
       for(i=1;i<=l2;i++)
      {
        if(I[x].L[i]=='-'||O[y].L[i]=='-')
         if(I[x].L[i]!=O[y].L[i]) break;
         j=GG(I[x].L[i]);k=GG(O[y].L[i]);
         if(j!=k) break;
      }
      if(i>O[y].l2) return true;
   }
   return false;
}
void Print()
{
  int i,j,k,bj=0;
  for(i=1;i<=s1;i++)
   for(j=i+1;j<=s1;j++)
   {
     int t=min(I[i].l3,I[j].l3),p=0;
     for(k=1;k<=t;k++)
      
      {if(I[i].E[k]>I[j].E[k]) {p=1;break;}
      if(I[i].E[k]<I[j].E[k]) {p=-1;break;}
      }
      if(p==1)
      {
       swap(I[i],I[j]);
       swap(v[i][0],v[j][0]);
      }
      if(p==0&&I[i].l3>I[j].l3) 
      {swap(I[i],I[j]);
       swap(v[i][0],v[j][0]);
      }
   }
   for(i=1;i<=s2;i++)
   for(j=i+1;j<=s2;j++)
   {
     int t=min(O[i].l3,O[j].l3),p=0;
     for(k=1;k<=t;k++)
      
      {if(O[i].E[k]>O[j].E[k]) {p=1;break;}
      if(O[i].E[k]<O[j].E[k]) {p=-1;break;}
      }
      if(p==1)
      {
       swap(O[i],O[j]);
       swap(v[i][1],v[j][1]);
      }
      if(p==0&&O[i].l3>O[j].l3) 
      {swap(O[i],O[j]);
       swap(v[i][1],v[j][1]);
      }
   }
   for(i=1;i<=s1;i++)
   if(!v[i][0])
   {
   bj=1;
     cout<<"I ";
     for(j=1;j<=I[i].l3;j++)
      cout<<I[i].E[j];
      cout<<" ";
       for(j=1;j<=I[i].l2;j++)
      cout<<I[i].L[j];
      cout<<" ";
       for(j=1;j<=I[i].l1;j++)
      cout<<I[i].F[j];
      cout<<endl;
   }
   for(i=1;i<=s2;i++)
   if(!v[i][1])
   {
   bj=1;
     cout<<"O ";
     for(j=1;j<=O[i].l3;j++)
      cout<<O[i].E[j];
      cout<<" ";
       for(j=1;j<=O[i].l2;j++)
      cout<<O[i].L[j];
      cout<<" ";
       for(j=1;j<=O[i].l1;j++)
      cout<<O[i].F[j];
      cout<<endl;
   }
   if(!bj) cout<<"No mismatches."<<endl;
}
int main()
{
   while(getline(cin,S))
   {
     if(S.length()==0) break;
     k=S.length();
     i=0;s1++;
     int p;
     while(i<=k&&!Checkc(S[i])) i++;
     p=0;
     for(j=i;Checkc(S[j])||S[j]=='-';j++)
     {
       
       I[s1].F[++p]=S[j];
     }
     i=j;
     I[s1].l1=p;
      while(i<=k&&!Checkc(S[i])) i++;
     p=0;
     for(j=i;Checkc(S[j])||S[j]=='-';j++)
     {
       
       I[s1].L[++p]=S[j];
     }
     i=j;
       I[s1].l2=p;
      while(i<=k&&!Checkc(S[i])) i++;
     p=0;
     for(j=i;j<=k;j++)
     {
       
       I[s1].E[++p]=S[j];
     }
     i=j;
       I[s1].l3=p;
   }
   while(getline(cin,S))
   {
    k=S.length();
    if(k==0) break;
     i=0;s2++;
     int p;
     while(i<=k&&!Checkc(S[i])) i++;
     p=0;
     for(j=i;Checkc(S[j])||S[j]=='-';j++)
     {
       
       O[s2].F[++p]=S[j];
     }
     i=j;
       O[s2].l1=p;
      while(i<=k&&!Checkc(S[i])) i++;
     p=0;
     for(j=i;Checkc(S[j])||S[j]=='-';j++)
     {
       
       O[s2].L[++p]=S[j];
     }
     i=j;
       O[s2].l2=p;
      while(i<=k&&!Checkc(S[i])) i++;
     p=0;
     for(j=i;j<=k;j++)
     {
       
       O[s2].E[++p]=S[j];
     }
     i=j;
     O[s2].l3=p;
   }
   for(i=1;i<=s1;i++)
    for(j=1;j<=s2;j++)
     if(Pipei(i,j)){v[i][0]=1;v[j][1]=1;}
    Print();
}
