Como pegar números em uma Sting a partir do ultimo espaço

Boa tarde, estou no meu primeiro semestre de CC e tenho que fazer um programa que calcule os 2 últimos dígitos de um CPF, como por exemplo = se digitar = 222333666, sair 222333666-38, ate ai tudo bem, porem as vezes o programa manda um = 0 112233445 ; -33 192837 135792468, etc…, e não estou conseguindo pegar apenas os últimos 9 dígitos, ai o código, espero que não esteja muito ruim…
Obs; Quando vai digitar o cpf tem que dar um espaço primeiro.

identar texto pré-formatado por 4 espaços
import java.util.Scanner;

public class CPF{
public static void main(String args[]){

    //Vaariaveis
    String Cpf;
    
    //Entrada
    Scanner entrada = new Scanner(System.in);
    Cpf = entrada.nextLine();
    
    
    //Processamento e Saida(A = 1° Digito e B = 2°Digito)
    
    
    /*------------------------------------------------1° Digito-----------------------------------------*/
    //Mutiplicaçoes = 10 9 8 7 6 5 4 3 2
    //Variaveis
    int Primeiro_Digito,Resto;
    char AD1,AD2,AD3,AD4,AD5,AD6,AD7,AD8,AD9,AD10;
    int AM1,AM2,AM3,AM4,AM5,AM6,AM7,AM8,AM9;
    
    //PROCESSAMENTO
    //Retira Numeros do CPF     //Mutiplica numeros de acordo com as exigencias
    AD1 = Cpf.charAt(1);         AM1 = (AD1 - 48) * 10;
    AD2 = Cpf.charAt(2);         AM2 = (AD2 - 48) * 9;
    AD3 = Cpf.charAt(3);         AM3 = (AD3 - 48) * 8;
    AD4 = Cpf.charAt(4);         AM4 = (AD4 - 48) * 7;
    AD5 = Cpf.charAt(5);         AM5 = (AD5 - 48) * 6;
    AD6 = Cpf.charAt(6);         AM6 = (AD6 - 48) * 5;
    AD7 = Cpf.charAt(7);         AM7 = (AD7 - 48) * 4;
    AD8 = Cpf.charAt(8);         AM8 = (AD8 - 48) * 3;
    AD9 = Cpf.charAt(9);         AM9 = (AD9 - 48) * 2;
    
    //Resto da divisao da soma das multiplicaçoes por 11
    Resto = (AM1+AM2+AM3+AM4+AM5+AM6+AM7+AM8+AM9)%11;
    
    //SAIDA
    if (Resto < 2){
        Primeiro_Digito = 0;
        
    
        /*------------------------------------------------2° Digito-----------------------------------------*/
    //Mutiplicaçoes = 11 10 9 8 7 6 5 4 3 2
    //Variaveis
    int Segundo_Digito,RestoB;
    char BD1,BD2,BD3,BD4,BD5,BD6,BD7,BD8,BD9;
    int BM1,BM2,BM3,BM4,BM5,BM6,BM7,BM8,BM9,BM10;
    
    //PROCESSAMENTO
    //Retira Numeros do CPF     //Mutiplica numeros de acordo com as exigencias
    BD1 = Cpf.charAt(1);         BM1 = (BD1 - 48) * 11;
    BD2 = Cpf.charAt(2);         BM2 = (BD2 - 48) * 10;
    BD3 = Cpf.charAt(3);         BM3 = (BD3 - 48) * 9;
    BD4 = Cpf.charAt(4);         BM4 = (BD4 - 48) * 8;
    BD5 = Cpf.charAt(5);         BM5 = (BD5 - 48) * 7;
    BD6 = Cpf.charAt(6);         BM6 = (BD6 - 48) * 6;
    BD7 = Cpf.charAt(7);         BM7 = (BD7 - 48) * 5;
    BD8 = Cpf.charAt(8);         BM8 = (BD8 - 48) * 4;
    BD9 = Cpf.charAt(9);         BM9 = (BD9 - 48) * 3;
                                 BM10 = Primeiro_Digito * 2;
    
    RestoB = (BM1+BM2+BM3+BM4+BM5+BM6+BM7+BM8+BM9+BM10)%11;
    
    //SAIDA
    if (RestoB < 2){
        Segundo_Digito = 0;
        System.out.println(Cpf+"-"+Primeiro_Digito+Segundo_Digito);
    }
    else if (RestoB >= 2){
        Segundo_Digito = 11 - RestoB;
    
    System.out.println(Cpf+"-"+Primeiro_Digito+Segundo_Digito);
    }
        
    }
    else if (Resto >= 2){
        Primeiro_Digito = 11 - Resto;
    
    
    
    /*------------------------------------------------2° Digito-----------------------------------------*/
    //Mutiplicaçoes = 11 10 9 8 7 6 5 4 3 2
    //Variaveis
    int Segundo_Digito,RestoB;
    char BD1,BD2,BD3,BD4,BD5,BD6,BD7,BD8,BD9;
    int BM1,BM2,BM3,BM4,BM5,BM6,BM7,BM8,BM9,BM10;
    
    //PROCESSAMENTO
    //Retira Numeros do CPF     //Mutiplica numeros de acordo com as exigencias
    BD1 = Cpf.charAt(1);         BM1 = (BD1 - 48) * 11;
    BD2 = Cpf.charAt(2);         BM2 = (BD2 - 48) * 10;
    BD3 = Cpf.charAt(3);         BM3 = (BD3 - 48) * 9;
    BD4 = Cpf.charAt(4);         BM4 = (BD4 - 48) * 8;
    BD5 = Cpf.charAt(5);         BM5 = (BD5 - 48) * 7;
    BD6 = Cpf.charAt(6);         BM6 = (BD6 - 48) * 6;
    BD7 = Cpf.charAt(7);         BM7 = (BD7 - 48) * 5;
    BD8 = Cpf.charAt(8);         BM8 = (BD8 - 48) * 4;
    BD9 = Cpf.charAt(9);         BM9 = (BD9 - 48) * 3;
                                 BM10 = Primeiro_Digito * 2;
    
    RestoB = (BM1+BM2+BM3+BM4+BM5+BM6+BM7+BM8+BM9+BM10)%11;
    
    //SAIDA
    if (RestoB < 2){
        Segundo_Digito = 0;
        System.out.println(Cpf+"-"+Primeiro_Digito+Segundo_Digito);
    }
    else if (RestoB >= 2){
        Segundo_Digito = 11 - RestoB;
    
    System.out.println(Cpf+"-"+Primeiro_Digito+Segundo_Digito);
    }
    }
}

}

String cpf = "000000000000";

cpf = cpf.substring(cpf.length() - 9);

ou

cpf = cpf.substring(cpf.indexOf(" "));

Seus Cpf.charAt estão errados, o primeiro caractere de uma String está na posição 0 e você está começando em 1.