#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const long long maxn = 2e5 + 1;
void solve() {
  long long n, i, j, k;
  string a, b;
  cin >> a >> b;
  cin >> k;
  long long na = 0, nb = 0;
  for (i = 1; i < int(a.size()); i++) {
    string pre = a.substr(i);
    string suf = a.substr(0, i);
    string ne = pre + suf;
    if (ne == b) {
      na++;
    } else {
      nb++;
    }
  }
  long long dp[k + 1][2];
  memset(dp, 0, sizeof(dp));
  if (a == b) {
    na++;
    dp[0][0] = 1;
    dp[0][1] = 0;
  } else {
    nb++;
    dp[0][0] = 0;
    dp[0][1] = 1;
  }
  for (i = 1; i <= k; i++) {
    dp[i][0] = ((dp[i - 1][0] % mod * (na - 1) % mod) % mod +
                (dp[i - 1][1] % mod * na % mod) % mod) %
               mod;
    dp[i][1] = ((dp[i - 1][1] % mod * (nb - 1) % mod) % mod +
                (dp[i - 1][0] % mod * nb % mod) % mod) %
               mod;
  }
  cout << dp[k][0] << "\n";
}
int main() {
  long long t = 1;
  while (t--) {
    solve();
  }
}
