public String cipher_sub(String sub)
     {
    	 StringBuilder sb=new StringBuilder();
    	 int[][] codes=new int[3][sub.length()/2];
    	
    	 for(int i=0;i<sub.length();i+=2)
    	 {
    		 char c1=(char)(sub.charAt(i)-'a'+'A');
    		 char c2=sub.charAt(i+1);
    		 Pair<Integer> cp1=h1.get(c1);
    		 codes[0][i/2]=cp1.get_second()+1;
    		// sb.append(cp1.get_second()+1);
    		 Pair<Integer> cp2=h2.get(c2);
    		 codes[1][i/2]=mid_square[cp1.get_first()][cp2.get_second()];
    		 codes[2][i/2]=cp2.get_first()+1;
    		// sb.append(mid_square[cp1.get_first()][cp2.get_second()]);
    		// sb.append(cp2.get_first()+1);
    	 }
    	 ArrayList<Integer> triple=new ArrayList<Integer>();
    	 for(int i=0;i<3;i++)
    	 {
    		 for(int j=0;j<sub.length()/2;j++)
    		 {
    			 if(triple.size()<3)
    			 {
    			   triple.add(codes[i][j]);
    			 }
    			 else
    			 {
    				 sb.append(find_ct(triple));
    				 triple.clear();
    				 triple.add(codes[i][j]);
    			 }
    		 }
    	 }
    	if(triple.size()==3)
    	{
    		sb.append(find_ct(triple));
    	}
    	 return sb.toString();
     }