using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
#pragma warning disable CS8603, CS8604, CS8602,8618
namespace ProblemE
{
internal class TEST
{
public static void Main()
{
Sol mySol = new Sol();
mySol.Solve();
}
}
internal class Sol
{
public void Solve()
{
var sb = new StringBuilder();
for(;T>0;T--) {
A = rs();
B = rs();
int N = A.Length;
var AAB = A + A + B;
var rh0 = new RollingHash(AAB, 2525, 1000000000 + 7);
var rh1 = new RollingHash(AAB, 5252, 1000000000 + 9);
var m0 = rh0.GetHash(N + N, N);
var m1 = rh1.GetHash(N + N, N);
int idx = -1;
for(int i=0;i<N;i++){
var r0 = rh0.GetHash(i, N);
var r1 = rh1.GetHash(i, N);
if(r0 == m0 && r1 == m1){
idx = i;
break;
}
}
sb.AppendLine(idx.ToString());
}
Console.Write(sb.ToString());
}
int T;
String A, B;
public Sol()
{
T = ri();
}
static String rs() { return Console.ReadLine(); }
static int ri() { return int.Parse(Console.ReadLine()); }
static long rl() { return long.Parse(Console.ReadLine()); }
static double rd() { return double.Parse(Console.ReadLine()); }
static String[] rsa(char sep = ' ') { return Console.ReadLine().Split(sep); }
static int[] ria(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e => int.Parse(e)); }
static long[] rla(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e => long.Parse(e)); }
static double[] rda(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e => double.Parse(e)); }
static T[] mka<T>(int n, T ini) { T[] ret = new T[n]; for (int i = 0; i < n; i++) ret[i] = ini; return ret; }
static T[][] mka<T>(int n, int m, T ini) { T[][] ret = new T[n][]; for (int i = 0; i < n; i++) ret[i] = mka(m, ini); return ret; }
static T[][][] mka<T>(int n, int m, int l, T ini) { T[][][] ret = new T[n][][]; for (int i = 0; i < n; i++) ret[i] = mka(m, l, ini); return ret; }
static T[][][][] mka<T>(int n, int m, int l, int k, T ini) { T[][][][] ret = new T[n][][][]; for (int i = 0; i < n; i++) ret[i] = mka(m, l, k, ini); return ret; }
static T[] mka<T>(int n) where T : new() { T[] ret = new T[n]; for (int i = 0; i < n; i++) ret[i] = new T(); return ret; }
static T[][] mka<T>(int n, int m) where T : new() { T[][] ret = new T[n][]; for (int i = 0; i < n; i++) ret[i] = mka<T>(m); return ret; }
static T[][][] mka<T>(int n, int m, int l) where T : new() { T[][][] ret = new T[n][][]; for (int i = 0; i < n; i++) ret[i] = mka<T>(m, l); return ret; }
static T[][][][] mka<T>(int n, int m, int l, int k) where T : new() { T[][][][] ret = new T[n][][][]; for (int i = 0; i < n; i++) ret[i] = mka<T>(m, l, k); return ret; }
}
class RollingHash {
long[] Hash;
long[] Base;
long[] BaseInv;
String S;
long mod;
int N;
public RollingHash(String s_, long base_ = 2525, long mod_ = (long)1e9 + 7) {
mod = mod_;
S = s_;
N = S.Length;
Hash = new long[N + 1];
Base = new long[N + 1];
Base[0] = 1;
Base[1] = base_;
for (int i = 1; i < N; i++) {
Base[i + 1] = Base[i] * Base[1];
if (Base[i + 1] >= mod) Base[i + 1] %= mod;
}
Hash[0] = 0;
Hash[1] = (long)S[0];
for (int i = 1; i < N; i++) {
Hash[i + 1] = Hash[i] * Base[1] + (long)S[i];
if (Hash[i + 1] >= mod) Hash[i + 1] %= mod;
}
}
public long GetHash(int strt, int len) {
//return hash of S.Substring(strt,len);
if (len == 0) return 0;
if (strt + len >= N) len = N - strt;
long ret = Hash[strt + len] + mod - (Hash[strt] * Base[len] >= mod ? Hash[strt] * Base[len] % mod : Hash[strt] * Base[len]);
return ret >= mod ? ret % mod : ret;
}
}
}