#include <string>
#include <iostream>
#include <vector>
using namespace std;


int main()
{
   
    vector<string> v = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p"};
    vector<string> m = {"ab","ae","af","ba","bc","be","bf","bg","cb","cd","cf","cg","ch","dc","dg","dh","ea","eb","ef","ei","ej","fa","fb","fc","fe","fg","fi","fj","fk","gb","gc","gd","gf","gh","gj","gk","gl","hc","hd","hg","hk","hl","ie","if","ij","im","in","je","jf","jg","ji","jk","jm","jn","jo","kf","kg,","kh","kj","kl","kn","ko","kp","lg","lh","lk","lo","lp","mi","mj","mn","ni","nj","nk","nm","no","oj","ok","ol","on","op","pk","pl","po"};
    
   string sv = "z";
    vector <string> vier, drei,funf,sechs,sieben,acht,neun,zehn;
    string sp ;
    string sh;
    string sd, sr, so;
   
    for (int i=0;i<16;i++){
        sh = v[i];
    
       
        for (int j=0;j<86;j++){
            
            
        sv = m[j];
        sd = m [j];
          
        sv.erase(1,1);
        sd.erase (0,1);
        
        if (sh == sv && sh != sd)
         {
          
          sp = sh + sd;    
          
          drei.push_back(sp);
         }
        
        
	   }
	   }
	   int three = drei.size();
	   cout << three << endl;
	   
	       for (size_t i=0;i<three;i++){
        sh = drei[i];
        sr = drei [i];
        so = drei [i];
        sr.erase (0,1);
        so.erase (1,1);
       
        for (size_t j=0;j<86;j++){
        sv = m[j];
        sd = m [j];
          
        sv.erase(1,1);
        sd.erase (0,1);
        
        if (sr == sv && so != sd)
         {
         
          
          sp = sh + sd;    
          
        vier.push_back(sp);
         }
      
            }
            }
         for (int l=0;l <83;l++){
                    cout <<drei [l] << endl;
          }
         for (int k=0;k<vier.size ();k++){
    
    cout << vier [k] << endl;
  }
    cout << vier.size ()<< endl;
    string s3;
  //  int vier = vier.size ();
    //vier
	 for (size_t i=0;i<vier.size();i++){
        sh = vier[i];
        sr = vier [i];
        so = vier[i];
        s3 = vier[i];
        sr.erase (1,2);
        so.erase (0,2);
        s3.erase (0,1);
        s3.erase (1,1);
       
        for (size_t j=0;j<86;j++){
        sv = m[j];
        sd = m [j];
          
        sv.erase(1,1);
        sd.erase (0,1);
        
        if (sr == sv && so != sd && s3 != sd)
         {
         
          
          sp = sh + sd;    
          
        funf.push_back(sp);
         }
      
            }
            }
        
         for (int k=0;k<funf.size();k++){
    
    cout << funf [k] << endl;
  }
    cout << funf.size()<< endl;
    string s4;
    
   // funf
	 for (size_t i=0;i<funf.size();i++){
        sh = funf[i];
        sr = funf[i];
        so = funf[i];
        s3 = funf[i];
        s4 = funf[i];
        sr.erase (1,3);
        so.erase (0,3);
        s3.erase (0,1);
        s3.erase (1,2);
        s4.erase (0,2);
        s4.erase (1,1);
       
        for (size_t j=0;j<86;j++){
        sv = m[j];
        sd = m [j];
          
        sv.erase(1,1);
        sd.erase (0,1);
        
        if (sr == sv && so != sd && s3 != sd&&sd!=s4)
         {
         
          
          sp = sh + sd;    
          
        sechs.push_back(sp);
         }
      
            }
            }
        
         for (int k=0;k <sechs.size();k++){
    
    cout << sechs [k] << endl;
  }
    cout << sechs.size ()<< endl;
	string s5;
	//sechs
	 for (size_t i=0;i<sechs.size();i++){
        sh = sechs[i];
        sr = sechs[i];
        so = sechs[i];
        s3 = sechs[i];
        s4 = sechs[i];
        s5 = sechs [i];
        sr.erase (1,4);
        so.erase (0,4);
        s3.erase (0,1);
        s3.erase (1,3);
        s4.erase (0,2);
        s4.erase (1,2);
        s5.erase (0,3);
        s5.erase (1,1);
       
        for (size_t j=0;j<86;j++){
        sv = m[j];
        sd = m [j];
          
        sv.erase(1,1);
        sd.erase (0,1);
        
        if (sr == sv && so != sd && s3 != sd&&sd!=s4&&sd!=s5)
         {
         
          
          sp = sh + sd;    
          
        sieben.push_back(sp);
         }
      
            }
            }
        
         for (int k=0;k <sieben.size();k++){
    
    cout << sieben [k] << endl;
  }
    cout << sieben.size ()<< endl;
   string s6;
       //sieben
	 for (size_t i=0;i<sieben.size();i++){
        sh = sieben[i];
        sr = sieben[i];
        so = sieben[i];
        s3 = sieben[i];
        s4 = sieben[i];
        s5 = sieben[i];
        s6 = sieben[i];
        sr.erase (1,5);
        so.erase (0,5);
        s3.erase (0,1);
        s3.erase (1,4);
        s4.erase (0,2);
        s4.erase (1,3);
        s5.erase (0,3);
        s5.erase (1,2);
        s6.erase (0,4);
        s6.erase (1,1);
        
       
        for (size_t j=0;j<86;j++){
        sv = m[j];
        sd = m [j];
          
        sv.erase(1,1);
        sd.erase (0,1);
        
        if (sr == sv && so != sd && s3 != sd&&sd!=s4&&sd!=s5&&sd!=s6)
         {
         
          
          sp = sh + sd;    
          
        acht.push_back(sp);
         }
      
            }
            }
        
         for (int k=0;k <acht.size();k++){
    
    cout << acht [k] << endl;
  }
    cout << acht.size ()<< endl;
	
	string s7;
	//acht
	 for (unsigned int i=0;i<acht.size();i++){
        sh = acht[i];
        sr = acht[i];
        so = acht[i];
        s3 = acht[i];
        s4 = acht[i];
        s5 = acht[i];
        s6 = acht[i];
        s7 = acht[i];
        sr.erase (1,6);
        so.erase (0,6);
        s3.erase (0,1);
        s3.erase (1,5);
        s4.erase (0,2);
        s4.erase (1,4);
        s5.erase (0,3);
        s5.erase (1,3);
        s6.erase (0,4);
        s6.erase (1,2);
        s7.erase (0,5);
        s7.erase (1,1);
        
       
        for (size_t j=0;j<86;j++){
        sv = m[j];
        sd = m [j];
          
        sv.erase(1,1);
        sd.erase (0,1);
        
        if (sr == sv && so != sd && s3 != sd&&sd!=s4&&sd!=s5&&sd!=s6&&sd!=s7)
         {
         
          
          sp = sh + sd;    
          
        neun.push_back(sp);
         }
      
            }
            }
        
         for (unsigned int k=0;k <neun.size();k++){
    
    cout << neun [k] << endl;
  }
    cout << neun.size ()<< endl;
    cout << neun[177240]<< endl;

    //   string s8;
	//neun
	// for (size_t i=0;i<neun.size();i++){
    //    sh = neun[i];
     //   sr = neun[i];
     //   so = neun[i];
     //   s3 = neun[i];
    //    s4 = neun[i];
      //  s5 = neun[i];
     //   s6 = neun[i];
    //    s7 = neun[i];
     //   s8 = neun[i];
     //   sr.erase (1,7);
      //  so.erase (0,7);
   //     s3.erase (0,1);
     //   s3.erase (1,6);
    //    s4.erase (0,2);
     //   s4.erase (1,5);
      //  s5.erase (0,3);
     //   s5.erase (1,4);
     //   s6.erase (0,4);
    //    s6.erase (1,3);
   //     s7.erase (0,5);
    //    s7.erase (1,2);
     //   s8.erase (0,6);
    //    s8.erase (1,1);
        
       
    //    for (size_t j=0;j<86;j++){
     //   sv = m[j];
     //   sd = m [j];
          
     //   sv.erase(1,1);
    //    sd.erase (0,1);
        
    //    if (sr == sv && so != sd && s3 != sd&&sd!=s4&&sd!=s5&&sd!=s6&&sd!=s7&&sd!=s8)
      //   {
         
          
    //      sp = sh + sd;    
          
    //    zehn.push_back(sp);
        // }
      
          //  }
       //     }
        
      //   for (int k=0;k <zehn.size();k++){
    
  //  cout << zehn [k] << endl;
  //}
   // cout << zehn.size ()<< endl;
	
	
	
	}