private String cipher_digraph(String pl,HashMap<Character,Pair<Integer> > h1, HashMap<Character,Pair<Integer>> h2, HashMap<Character,Pair<Integer>> h3)
	 {
		 
		 assert(pl.length()==2);
		 StringBuilder sb=new StringBuilder();
		 char c1=pl.charAt(0);
		 char c2=pl.charAt(1);
		 if(c1=='J')
		 {
			 c1='I';
		 }
		 if(c2=='J')
		 {
			 c2='I';
		 }
		 Pair<Integer> p1=h1.get(Character.valueOf(c1));
		 Pair<Integer> p2=h2.get(Character.valueOf(c2));
		 Random r=new Random();
		 int c1_row=p1.get_first();
		 int c1_col=p1.get_second();
		 int c2_row=p2.get_first();
		 int c2_col=p2.get_second();
		 int rand=r.nextInt(4)+1;
		 int rand2=r.nextInt(4)+1;
		 int ct1_row=(c1_row+rand>4)?c1_row+rand-4:c1_row+rand;
		 int ct2_col=(c2_col+rand2>4)?c2_col+rand2-4:c2_col+rand2;
		 sb.append(square1[ct1_row][c1_col]);
		 sb.append(square3[c1_row][c2_col]);
		 sb.append(square2[c2_row][ct2_col]);
		 return sb.toString();
		/* if(p1.get_first()==p2.get_first())
		 {
			 sb.append(c2);
			 sb.append(c1);
			 return sb.toString();
		 }
		 else
		 {
			 sb.append(square2[p1.get_first()][p2.get_second()]);
			 sb.append(square1[p2.get_first()][p1.get_second()]);
			 return sb.toString();
		 }*/
	}