Problem:
Score : 300 points

Problem Statement

You are given a string S of length N and another string T of length M.
These strings consist of lowercase English letters.

A string X is called a good string when the following conditions are all met:

Let L be the length of X. L is divisible by both N and M.

Concatenating the 1-st, (\frac{L}{N}+1)-th, (2 \times \frac{L}{N}+1)-th, ..., ((N-1)\times\frac{L}{N}+1)-th characters of X, without changing the order, results in S.

Concatenating the 1-st, (\frac{L}{M}+1)-th, (2 \times \frac{L}{M}+1)-th, ..., ((M-1)\times\frac{L}{M}+1)-th characters of X, without changing the order, results in T.

Determine if there exists a good string. If it exists, find the length of the shortest such string.

Constraints

1 \leq N,M \leq 10^5

S and T consist of lowercase English letters.

|S|=N

|T|=M

Input

Input is given from Standard Input in the following format:

N M
S
T

Output

If a good string does not exist, print -1; if it exists, print the length of the shortest such string.

Sample Input 1

3 2
acp
ae

Sample Output 1

6

For example, the string accept is a good string.
There is no good string shorter than this, so the answer is 6.

Sample Input 2

6 3
abcdef
abc

Sample Output 2

-1

Sample Input 3

15 9
dnsusrayukuaiia
dujrunuma

Sample Output 3

45

Solution in Perl (v5.18.2) (judge verdict: Accepted)

#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

use 5.010;

my @args;
while (<>) {
    chomp;
    push @args, $_;
}

my ($N, $M) = split " ", shift @args;
my $S = shift @args;
my $T = shift @args;


my @S = split "", $S;
my @T = split "", $T;

my $L = saisho($N, $M);
my (%s, %t);
for my $i (0 .. ($N - 1)) {
    $s{$i * $L/$N + 1} = $S[$i];
}
for my $i (0 .. ($M - 1)) {
    $t{$i * $L/$M + 1} = $T[$i];
}

my $ok = 1;
for my $i (keys %s) {
    if (defined $t{$i} and $s{$i} ne $t{$i}) {
        $ok = 0;
        last;
    }
}

if ($ok) {
    say "$L";
} else {
    say "-1";
}

sub saisho {
    my ($a, $b) = @_;
    my $x = $a * $b;
    if ($a < $b) {
        ($a, $b) = ($b, $a)
    }
    my $r = $a % $b;
    while ($r != 0) {
        $a = $b;
        $b = $r;
        $r = $a % $b;
    }
    return $x / $b;
}