public static char[][] build_trans_block(int[] key_num,String key)
	{
		int col=key_num.length;
		int row=26/col;
		if(row*col!=26)
		{
			row+=1;
		}
		char[][] result=new char[row][col];
		boolean[] filled=new boolean[26];
        int cur_row=0;
        int cur_col=0;
		for(int i=0;i<key.length();i++)
		{
			char cur_c=key.toUpperCase().charAt(i);
			int pos=cur_c-'A';
			if(filled[pos])
				continue;
			result[cur_row][cur_col]=cur_c;
			filled[pos]=true;
			if(cur_col==col-1)
			{
				cur_row++;
				cur_col=0;
			}
			else
			{
			  cur_col++;
			}
		}
		
	//	int cur_row;
	//	int cur_col=0;
		for(int i=0;i<26;i++)
		{
			if(!filled[i])
			{
				result[cur_row][cur_col]=(char)('A'+i);
				filled[i]=true;
				if(cur_col==col-1)
				{
					cur_col=0;
					cur_row++;
				}
				else
				{
					cur_col++;
				}
			}
		}
		return result;		
	}