参考代码:

#include<bits/stdc++.h>
#define inf 1000000007
using namespace std;
int d[1000][1000];
int main(){
    for (int i=0;i<233;i++) for (int j=0;j<233;j++) d[i][j]=inf;
    for (int i=0;i<233;i++){
        d[i][(i*i*i+i*i)%233]=1;
        d[i][(i*i*i-i*i)%233]=1;
    }
    for (int k=0;k<233;k++)
        for (int i=0;i<233;i++)
            for (int j=0;j<233;j++) if (d[i][k]+d[k][j]<d[i][j])
                d[i][j]=d[i][k]+d[k][j];
    int tt;scanf("%d",&tt);
    for (;tt--;){
        int a,b;scanf("%d%d",&a,&b);
        if (a==b) puts("0");
        else if (b>=233) puts("-1");
        else if (d[a%233][b]==inf) puts("-1");
        else printf("%d\n",d[a%233][b]);
    }
}