#include <bits/stdc++.h>   #pragma comment(linker,  /STACK:64777216 )   using namespace std;   template <class T>   inline T sqr(T x) {     return x * x;   }   const double pi = acos(-1.0), eps = 1e-9;   const int INF = 1000 * 1000 * 1000, MAXN = 1000005, MOD = 1000000007;   const long long INFL = 1000000000000000000;   long long n, m, cnt[MAXN][26];   string x, y;   void prepare(string s) {     if ((int)s.size() != 0) {       freopen((s +  .in ).c_str(),  r , stdin);       freopen((s +  .out ).c_str(),  w , stdout);     }   }   long long gcd(long long a, long long b) { return (b) ? gcd(b, a % b) : a; }   long long lca(long long a, long long b) { return a / gcd(a, b) * b; }   void get_data() { cin >> n >> m >> x >> y; }   void solve() {     long long L = lca((int)x.size(), (int)y.size());     long long g = gcd((int)x.size(), (int)y.size());     long long ans = L;     for (int i = 0; i < (int)y.size(); ++i) cnt[i % g][y[i] -  a ]++;     for (int j = 0; j < (int)x.size(); ++j) ans -= cnt[j % g][x[j] -  a ];     cout << ans * (n * (int)x.size() / L);   }   int main() {     prepare(  );     get_data();     solve();     return 0;   }   