#include <bits/stdc++.h>
using namespace std;
bool endline = false;
bool endline2 = false;
template <class T>
istream &operator>>(istream &in, vector<T> &v) {
  for (auto &i : v) {
    in >> i;
  }
  return in;
}
template <class T>
ostream &operator<<(ostream &out, const vector<T> &v) {
  for (auto i : v) {
    out << i;
    if (!endline2)
      cout << ' ';
    else
      cout << '\n';
  }
  if (endline && !endline2) cout << '\n';
  return out;
}
template <class T, class U>
istream &operator>>(istream &in, pair<T, U> &a) {
  in >> a.first >> a.second;
  return in;
}
template <class T, class U>
ostream &operator<<(ostream &out, const pair<T, U> &a) {
  out << a.first << ' ' << a.second;
  return out;
}
pair<long long, long long> start, finish;
int n;
vector<pair<int, int>> a;
pair<long long, long long> c = {0, 0};
long long dist(pair<long long, long long> f, pair<long long, long long> s) {
  return abs(f.first - s.first) + abs(f.second - s.second);
}
bool good(long long cur) {
  pair<long long, long long> curstart;
  curstart.first = start.first + c.first * (cur / n);
  curstart.second = start.second + c.second * (cur / n);
  for (int i = 0; i < cur % n; i++) {
    curstart.first += a[i].first;
    curstart.second += a[i].second;
  }
  return (dist(curstart, finish) <= cur);
}
int main() {
  cin >> start >> finish;
  cin >> n;
  a.resize(n);
  for (int i = 0; i < n; i++) {
    char q;
    cin >> q;
    if (q == 'U') {
      a[i] = {0, 1};
    }
    if (q == 'D') {
      a[i] = {0, -1};
    }
    if (q == 'L') {
      a[i] = {-1, 0};
    }
    if (q == 'R') {
      a[i] = {1, 0};
    }
    c.first += a[i].first;
    c.second += a[i].second;
  }
  long long left = -1, right = (long long)1e18, middle;
  while (right - left > 1) {
    middle = (right + left) / 2;
    if (good(middle)) {
      right = middle;
    } else {
      left = middle;
    }
  }
  if (right >= (long long)1e18 - (long long)100) {
    cout << -1;
  } else {
    cout << right;
  }
  return 0;
}
