Aizu online, Introduction to Programming 11-3のサイコロの一致を判定する問題をJavaで解いているのですが、テストケース(6/35)しか通らず、どこが間違っているのかわかりません。
どなたか間違いが見つかったら教えていただいてもいいでしょうか。

    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
    String str;
    String[] dice;
    int[] compare_dice=new int[6];
    int[] int_dice=new int[6];
    int count=0;

    try{

        str=reader.readLine();
        dice=str.split(" ");
        for(int i=0;i<6;i++){
            int_dice[i]=Integer.parseInt(dice[i]);
        }//1つめのサイコロ

        str=reader.readLine();
        dice=str.split(" ");
        for(int i=0;i<6;i++){
            compare_dice[i]=Integer.parseInt(dice[i]);
        }//2つめのサイコロ

//サイコロの上面、右面を一致させたあと、各面が一致しているかを判定する

        //上面の一致
        if(int_dice[0]!=compare_dice[0]){
            for(int j=0;j<3;j++){
             roll('S', int_dice);//南方向にサイコロを3回まで転がす。

             if(int_dice[0]==compare_dice[0])break;
            }
            if(int_dice[0]!=compare_dice[0]){
                for(int j=0;j<3;j++){
                    roll('E', int_dice);//東方向にサイコロを3回まで転がす。
                    if(int_dice[0]==compare_dice[0])break;
                }
            }
        }//上面一致

//次に全面を一致させる。

        if(int_dice[1]!=compare_dice[1]){
            for(int k=0;k<3;k++){
                rotate(int_dice);//サイコロの横回転
                if(int_dice[1]==compare_dice[1])break;
            }
        }//前面一致

//各面が一致しているかを判定する。

        for(int i=0;i<6;i++){
            if(int_dice[i]==compare_dice[i]){
                count++;
            }
            System.out.println(int_dice[i]+" "+compare_dice[i]);//確認用
        }

        if(count==6){System.out.println("Yes");}else{
            System.out.println("No");
        }
    }catch(IOException e){
        System.out.print(e);
    }
}

//以下メソッド
//11-1, 11-2でも同じメソッドを使ったので長いです。

private static void rotate(int[] int_dice){
    //横に右回転するためのメソッド
    int x=int_dice[3];
    int_dice[3]=int_dice[4];
    int_dice[4]=int_dice[2];
    int_dice[2]=int_dice[1];
    int_dice[1]=x;
}

private static void roll(char ch, int[] int_dice){
    int[] dice_for_change=new int[6];

    switch(ch){

    case 'S':
    {
        dice_for_change[0]=int_dice[4];
        dice_for_change[1]=int_dice[0];
        dice_for_change[2]=int_dice[2];
        dice_for_change[3]=int_dice[3];
        dice_for_change[4]=int_dice[5];
        dice_for_change[5]=int_dice[1];

        }
    break;

    case 'E':
    {
        dice_for_change[0]=int_dice[3];
        dice_for_change[1]=int_dice[1];
        dice_for_change[2]=int_dice[0];
        dice_for_change[3]=int_dice[5];
        dice_for_change[4]=int_dice[4];
        dice_for_change[5]=int_dice[2];

        }
    break;

    case 'N':
    {//処理
        dice_for_change[0]=int_dice[1];
        dice_for_change[1]=int_dice[5];
        dice_for_change[2]=int_dice[2];
        dice_for_change[3]=int_dice[3];
        dice_for_change[4]=int_dice[0];
        dice_for_change[5]=int_dice[4];
        }
    break;

    case 'W':
    {
        dice_for_change[0]=int_dice[2];
        dice_for_change[1]=int_dice[1];
        dice_for_change[2]=int_dice[5];
        dice_for_change[3]=int_dice[0];
        dice_for_change[4]=int_dice[4];
        dice_for_change[5]=int_dice[3];
        }
    break;
    }//switch
    for(int k=0;k<6;k++){
        int_dice[k]=dice_for_change[k];

    }//転がすたびに代入