import java.io.*;
import java.util.*;
import java.net.*;
//_____________________________________________________________
public class eight
{ 
   int letters = 28;
   String allletters = "BRAJYO BRA ALHYM AO HJMYM VAO HARE".replace(" ","");
   String[] allargs = "BRAJYO BRA ALHYM AO HJMYM VAO HARE".split(" ");
   int vb = 7;
   static String out = "";
   StringBuffer bufout = new StringBuffer();
   static String show = "";
//_____________________________________________________________
public static final void main(String[] args) throws Exception
{
   eight bnk = new eight();
   bnk.start();
}
//_____________________________________________________________
eight() throws Exception 
{
}
//___________________________________________________________________________
void start()
{
   start2();
}

//___________________________________________________________________________
void start2()
{
   String[] file = "BRAJYO BRA ALHYM AO HJMYM VAO HARE".split(" ");
   startit(file);
   file = data.getFile("full.txt").toLowerCase().split(" ");
   startit(file);
}
//___________________________________________________________________________
void startit(String[] file)
{
   HashMap hash = new HashMap();
   int hashpos = 0;
   int count = 0;
   int count2 = 0;
   int count3 = 0;
   int count4 = 0;
   int count5 = 0;
   StringBuffer buf1 = new StringBuffer();
   int length = 7;
   for (int i = 0; i <= file.length - length; i++)
   {
      count++;
      buf1 = new StringBuffer();
      for (int j = 0; j < length; j++)
      {
         if (j > 0) buf1.append(" ");
         String st = file[i+j];
         buf1.append(clean(st));
      }
      String str = buf1.toString().trim().replace("  "," ");
      allletters = str.replace(" ","");
      allargs = str.split(" ");
      letters = allletters.length();
      boolean good = true;
      if ((letters > 3) & (allargs.length == 7))
      {
         count3++;
         if (check13() > 0) good = false;
         if (check14() > 0) good = false;
         if (check15() > 0) good = false;
         if (check16() > 0) good = false;
         if (check17() > 0) good = false;
         if (check18() > 0) good = false;
         if (check19() > 0) good = false;
         if (check20() > 0) good = false;
         if (good) 
         {
             if (hash.get(str) == null)
             {
                hash.put(str,hashpos++);
                count2++;
                int adj = getadj(str);
                if (adj >= 7) 
                {
                   count4++;
                   String four = getfour(str);
                   if (!four.equals("")) 
                   {
                      count5++;
                      System.out.println(count2 + " " + str + " " + adj + " [" + four + "]");
                      bufout.append(str + "\r\n");
                   }
                }
             }
             
         }
      }
   }
   System.out.println(count2 + " " + count4 + " " + count5 + " / " + count3);
   data.saveFile("out.txt",bufout.toString(),false);
}
//___________________________________________________________________________
String clean(String str)
{
   String st = str;
   byte[] str2 = str.getBytes();
   StringBuffer buf = new StringBuffer();
   for (int i = 0; i < str2.length; i++)
   {
      if ((str2[i] >= 'a') & (str2[i] <= 'z') | (str2[i] >= 'A') & (str2[i] <= 'Z'))
      {
         buf.append((char)str2[i]);
      }
   }
   String out = buf.toString();
   if (out.length() > 7) out = out.substring(0,7);
   return(out);
}
//___________________________________________________________________________
int check13()
{
   int avgletters = letters / 2;
   int val = value(allletters.substring(0,1));
   val += value(allletters.substring(avgletters-1,avgletters));
   if (val % vb == 0) return(-1); 
   return(13);
}
//___________________________________________________________________________
int check14()
{
   int avgletters = letters / 2;
   int val = value(allletters.substring(avgletters,avgletters+1));
   val += value(allletters.substring(allletters.length()-1,allletters.length()));
   if (val % vb == 0) return(-1);  
   return(14);
}
//___________________________________________________________________________
int check15()
{
   int avgletters = letters / 2;
   int val = value(allletters.substring(0,1));
   val += value(allletters.substring(avgletters,avgletters+1));
   val = value(allletters.substring(avgletters+1,avgletters+2));
   val += value(allletters.substring(allletters.length()-1,allletters.length()));
   if (val % vb == 0) return(-1); 
   else return(15);
}
//___________________________________________________________________________
int check16()
{ 
   if (allargs[0].length() < 1) allargs[0] = "a";
   int val = value(allargs[0].substring(0,1));
   val += value(allargs[allargs.length-1].substring(0,1));
   if (val % vb == 0) return(-1); 
   return(16);
}
//___________________________________________________________________________
int check17()
{
   int val = value(allargs[0].substring(allargs[0].length()-1,allargs[0].length()));
   String s = allargs[allargs.length-1];
   val += value(s.substring(s.length()-1,s.length()));
   if (val % vb == 0) return(-1); 
   return(17);
}
//___________________________________________________________________________
int check18()
{   
   String s = allargs[allargs.length-1];
   int val = value(allargs[0].substring(0,1));
   val += value(allargs[allargs.length-1].substring(0,1));
   val += value(allargs[0].substring(allargs[0].length()-1,allargs[0].length()));
   val += value(s.substring(s.length()-1,s.length()));
   if (val % vb == 0) return(-1); 
   return(18);
}
//___________________________________________________________________________
int check19()
{
   int val = 0;
   for (int i = 1; i < allargs.length - 1; i++)
   {
      if (allargs[i].length() > 0)
      {
         val += value(allargs[i].substring(0,1));
         val += value(allargs[i].substring(allargs[i].length()-1,allargs[i].length()));
      }
      else return(19);
   }
   if (val % vb == 0) return(-1); 
   return(19);
}
//___________________________________________________________________________
int check20()
{
   int val = 0;
   for (int i = 0; i < allargs.length; i++)
   {
      if (allargs[i].length() > 0)
      {
         val += value(allargs[i].substring(0,1));
         val += value(allargs[i].substring(allargs[i].length()-1,allargs[i].length()));
      }
      else return(20);
   }
   if (val % vb == 0) return(-1); 
   return(20);
}
//__________________________________________________
public static int value(String str)
{
   int total = 0;
   out = "";
   for (int i = 0; i < str.length(); i++)
   {
      int v = 0;
      String st2 = str.substring(i,i+1);
      byte[] st3 = st2.getBytes();
      byte st = st3[0];
      if (st == 'a') v = 1;
      else if (st == 'b') v = 2;
      else if (st == 'c') v = 3;
      else if (st == 'd') v = 4;
      else if (st == 'e') v = 5;
      else if (st == 'f') v = 6;
      else if (st == 'g') v = 7;
      else if (st == 'h') v = 8;
      else if (st == 'i') v = 9;
      else if (st == 'j') v = 10;
      else if (st == 'k') v = 20;
      else if (st == 'l') v = 30;    
      else if (st == 'm') v = 40;
      else if (st == 'n') v = 50;
      else if (st == 'o') v = 60;
      else if (st == 'p') v = 70;
      else if (st == 'q') v = 80;
      else if (st == 'r') v = 90;
      else if (st == 's') v = 100;
      else if (st == 't') v = 200;
      else if (st == 'u') v = 300;
      else if (st == 'v') v = 400;
      else if (st == 'w') v = 500;
      else if (st == 'x') v = 600;
      else if (st == 'y') v = 700;
      else if (st == 'z') v = 800;
      else if (st == 'A') v = 1;
      else if (st == 'B') v = 2;
      else if (st == 'G') v = 3;
      else if (st == 'D') v = 4;
      else if (st == 'H') v = 5;
      else if (st == 'V') v = 6;
      else if (st == 'Z') v = 7;
      else if (st == 'C') v = 8;
      else if (st == 'T') v = 9;
      else if (st == 'Y') v = 10;
      else if (st == 'K') v = 20;
      else if (st == 'L') v = 30;
      else if (st == 'M') v = 40;
      else if (st == 'N') v = 50;
      else if (st == 'S') v = 60;
      else if (st == 'I') v = 70;
      else if (st == 'F') v = 80;
      else if (st == 'E') v = 90;
      else if (st == 'Q') v = 100;
      else if (st == 'R') v = 200;
      else if (st == 'J') v = 300;
      else if (st == 'O') v = 400;
      total += v;
      if (i > 0) out += " + ";
      out += Integer.toString(v);
   }
   return(total);
}
//__________________________________________________
public static int place(String str)
{
   int total = 0;
   out = "";
   for (int i = 0; i < str.length(); i++)
   {
      int v = 0;
      String st2 = str.substring(i,i+1);
      byte[] st3 = st2.getBytes();
      byte st = st3[0];
      if (st == 'a') v = 1;
      else if (st == 'b') v = 2;
      else if (st == 'c') v = 3;
      else if (st == 'd') v = 4;
      else if (st == 'e') v = 5;
      else if (st == 'f') v = 6;
      else if (st == 'g') v = 7;
      else if (st == 'h') v = 8;
      else if (st == 'i') v = 9;
      else if (st == 'j') v = 10;
      else if (st == 'k') v = 11;
      else if (st == 'l') v = 12;    
      else if (st == 'm') v = 13;
      else if (st == 'n') v = 14;
      else if (st == 'o') v = 15;
      else if (st == 'p') v = 16;
      else if (st == 'q') v = 17;
      else if (st == 'r') v = 18;
      else if (st == 's') v = 19;
      else if (st == 't') v = 20;
      else if (st == 'u') v = 21;
      else if (st == 'v') v = 22;
      else if (st == 'w') v = 23;
      else if (st == 'x') v = 24;
      else if (st == 'y') v = 25;
      else if (st == 'z') v = 26;
      else if (st == 'A') {v = 1; show += "Alef "; }
      else if (st == 'B') {v = 2; show += "Beit "; }
      else if (st == 'G') {v = 3; show += "Gimel "; }
      else if (st == 'D') {v = 4; show += "Dalet "; }
      else if (st == 'H') {v = 5; show += "Hei "; }
      else if (st == 'V') {v = 6; show += "Vav "; }
      else if (st == 'Z') {v = 7; show += "Zayin "; }
      else if (st == 'C') {v = 8; show += "Cheit "; }
      else if (st == 'T') {v = 9; show += "Teit "; }
      else if (st == 'Y') {v = 10; show += "Yod "; }
      else if (st == 'K') {v = 11; show += "Khaf "; }
      else if (st == 'L') {v = 12; show += "Lamed "; }
      else if (st == 'M') {v = 13; show += "Mem "; }
      else if (st == 'N') {v = 14; show += "Nun "; }
      else if (st == 'S') {v = 15; show += "Samekh "; }
      else if (st == 'I') {v = 16; show += "Ayin "; }
      else if (st == 'F') {v = 17; show += "Fe "; }
      else if (st == 'E') {v = 18; show += "Tzadei "; }
      else if (st == 'Q') {v = 19; show += "Qof "; }
      else if (st == 'R') {v = 20; show += "Reish "; }
      else if (st == 'J') {v = 21; show += "Shin "; }
      else if (st == 'O') {v = 22; show += "Tav "; }
      total += v;
      if (i > 0) out += " + ";
      out += Integer.toString(v);
   }
   return(total);
}
//__________________________________________________
int getadj(String str)
{
   String[] s = getadjacent().split("\r\n");
   int count = 0;
   String[] look = str.split(" ");
   for (int i = 0; i < s.length; i++)
   {
      String[] lk = s[i].split(",");
      String st = "";
      for (int j = 0; j < lk.length; j++)
      {
         int val = Integer.parseInt(lk[j]);
         st += look[val];
      }
      if (st.length() % 7 == 0) count++;
   }
   return(count);
}
//__________________________________________________
String getfour(String str)
{
   String out = "";
   for (int i = 0; i < 7; i++)
   {
      for (int j = 0; j < 7; j++)
      {
         for (int k = 0; k < 7; k++)
         {
//System.out.println(i + " " + j + " " + k);
            if (check(i,j,k,str)) return(Integer.toString(i+1) + Integer.toString(j+1) + Integer.toString(k+1));
         }
      }
   }
   return("");
}
//__________________________________________________
boolean check(int i, int j, int k, String str)
{
   String[] look = str.split(" ");
   boolean ok = true;
   String lk = look[i] + look[j] + look[k];
   String lk2 = "";
   for (int ii = 0; ii < 7; ii++)
   {
      if (ii == i) continue;
      if (ii == j) continue;
      if (ii == k) continue;
//System.out.println(ii + " " + look[ii]);
      lk2 += look[ii];
   }

//System.out.println(lk + " " + lk2 + " " + lk.length() + " " + place(lk) + " " + value(lk) + " " + lk2.length());

   if (lk.length() % 7 != 0) ok = false;
   if (place(lk) % 7 != 0) ok = false;
   if (value(lk) % 7 != 0) ok = false;
   if (lk2.length() % 7 != 0) ok = false;
   return(ok);
}
//__________________________________________________
String getadjacent()
{
   String s = "0,1,2,3,4,5,6\r\n";
   s += "0,1,2,3,4,5\r\n";
   s += "1,2,3,4,5,6\r\n";
   s += "0,1,2,3,4\r\n";
   s += "1,2,3,4,5\r\n";
   s += "2,3,4,5,6\r\n";
   s += "0,1,2,3\r\n";
   s += "1,2,3,4\r\n";
   s += "2,3,4,5\r\n";
   s += "3,4,5,6\r\n"; 
   s += "0,1,2\r\n";
   s += "1,2,3\r\n";
   s += "2,3,4\r\n";
   s += "3,4,5\r\n";
   s += "4,5,6\r\n";
   s += "0,1\r\n";
   s += "1,2\r\n";
   s += "2,3\r\n";
   s += "3,4\r\n";
   s += "4,5\r\n";
   s += "5,6\r\n";
   s += "0\r\n";
   s += "1\r\n";
   s += "2\r\n";
   s += "3\r\n";
   s += "4\r\n";
   s += "5\r\n";
   s += "6\r\n";
   return(s);
}
}//__________________________________________________________________________
