function Main(input) {
  input = input.split("\n");
  var n = parseInt(input[0].split(" ")[0]);
  var m = parseInt(input[0].split(" ")[1]);
  var s = input[1];
  var t = input[2];
  var ans = getLCM(n,m);
  var gcd = getGCD(n,m);
  for(i=0;i<gcd;i++){
    if(s.substr(i*n/gcd,1)!=t.substr(i*m/gcd,1)){
      ans=-1;
      break;
    }
  }
  console.log('%s', ans);
}
  
// "実行する"ボタンを押した時に実行される関数 (デバッグ用)
function debug(){
  var input = document.getElementById("input").value;
  Main(input);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

// numを素因数分解し結果を因数と指数のオブジェクト配列として返す
function getPrimeList(num) {

	var list = new Array();

	if (num < 1) {
		return null;
	}

	var i;

	// 平方根を素因数候補の最大値とする
	var r = Math.floor(Math.sqrt(num));

	for (i = 2;i <= r;i++) {

		// 候補で割り切れたら素因数として追加
		if ((num % i) == 0) {

			var n = 0;

			// 割り切れる回数を指数として記録
			do {

				n++;

				num = num / i;

			} while ((num % i) == 0);

			// 素因数オブジェクト作成
			var item = new Object();

			// 値と指数をプロパティとして記録
			item.num = i;
			item.r = n;

			// 配列にオブジェクトを記録
			list.push(item);

		}

	}

	// 最後に残った素因数を追加
	if (num > r) {

		var item = new Object();

		item.num = num;
		item.r = 1;

		list.push(item);

	}

	// 結果を返す
	return list;

}
// 整数aと整数bの最小公倍数を求める
function getLCM(a, b) {

	// aの素因数リストを取得
	var aPrimeList = getPrimeList(a);

	// bの素因数リストを取得
	var bPrimeList = getPrimeList(b);

	// 最小公倍数を保存する変数
	var lcm = 1;

	var i, j;

	// 共通の因数を保存する配列
	var list = new Array();

	// 共通の因数を保存し、掛け合わせる
	for (i = 0;i < aPrimeList.length;i++) {

		// bの因数リストを走査
		for (j = 0;j < bPrimeList.length;j++) {

			// aの因数がbにも含まれていたら共通因数の処理
			if (aPrimeList[i].num == bPrimeList[j].num) {

				// 因数の指数のうち大きな方を掛け合わせる
				if (aPrimeList[i].r > bPrimeList[j].r) {
					for (k = 0;k < aPrimeList[i].r;k++) {
						lcm *= aPrimeList[i].num;
					}
				} else {
					for (k = 0;k < bPrimeList[j].r;k++) {
						lcm *= aPrimeList[i].num;
					}
				}

				// 共通因数配列に追加
				list.push(aPrimeList[i].num);

			}
		}

	}

	// aの素因数分解リストから共通因数でない因数を抽出し掛け合わせる
	for (i = 0;i < aPrimeList.length;i++) {

		var flg = false;

		for (j = 0;j < list.length;j++) {
			if (aPrimeList[i].num == list[j]) {
				flg = true;
			}
		}

		if (!flg) {
			for (k = 0;k < aPrimeList[i].r;k++) {
				lcm *= aPrimeList[i].num;
			}
		}

	}

	// bの素因数分解リストから共通因数でない因数を抽出し掛け合わせる
	for (i = 0;i < bPrimeList.length;i++) {

		var flg = false;

		for (j = 0;j < list.length;j++) {
			if (bPrimeList[i].num == list[j]) {
				flg = true;
			}
		}

		if (!flg) {
			for (k = 0;k < bPrimeList[i].r;k++) {
				lcm *= bPrimeList[i].num;
			}
		}

	}

	return lcm;

}
function getGCD(m, n) {
  // 剰余
  var r;

  if(m < n) {  // m >= nにする
    r = m;  //一時退避
    m = n;
    n = r;
  }

  while ((r = m % n) != 0) {
    m = n;
    n = r;
  }

  return n;
}