#include <bits/stdc++.h>
using namespace std;
struct TreeNode1 {
 public:
  int start;
  int end;
  int range;
  TreeNode1 *left;
  TreeNode1 *right;
  TreeNode1(int s, int e, int sum) {
    this->start = s;
    this->end = e;
    this->range = sum;
    this->left = NULL;
    this->right = NULL;
  }
};
class NumArray {
 public:
  TreeNode1 *root;
  int n;
  vector<int> A;
  TreeNode1 *doWork(int start, int end, vector<int> &cummSum) {
    TreeNode1 *head;
    head = new TreeNode1(start, end, cummSum[end] - cummSum[start] + A[start]);
    if (start == end) return head;
    int mid = (end - start) / 2 + start;
    head->left = doWork(start, mid, cummSum);
    head->right = doWork(mid + 1, end, cummSum);
    return head;
  }
  NumArray(vector<int> &nums) {
    n = nums.size();
    if (n == 0) return;
    A.clear();
    A.resize(n, 0);
    for (int i = 0; i < n; i++) A[i] = nums[i];
    vector<int> cummSum(n, 0);
    cummSum[0] = nums[0];
    for (int i = 1; i < n; i++) cummSum[i] = cummSum[i - 1] + A[i];
    this->root = doWork(0, n - 1, cummSum);
  }
  void updateVal(TreeNode1 *head, int index, int val) {
    if (head->start == head->end) {
      head->range = val;
      cout << head->start << " " << head->end << " " << head->range << endl;
      return;
    }
    int mid = (head->end - head->start) / 2 + head->start;
    head->range = head->range - A[index] + val;
    cout << head->start << " " << head->end << " " << head->range << endl;
    if (index <= mid)
      updateVal(head->left, index, val);
    else
      updateVal(head->right, index, val);
  }
  void update(int i, int val) { updateVal(this->root, i, val); }
  int findVal(TreeNode1 *head, int start, int end) {
    if (start == head->start && end == head->end) return head->range;
    int mid = (head->end - head->start) / 2 + head->start;
    if (start > mid) {
      return findVal(head->right, start, end);
    } else if (end <= mid) {
      return findVal(head->left, start, end);
    } else {
      return findVal(head->left, start, mid) +
             findVal(head->right, mid + 1, end);
    }
  }
  int sumRange(int i, int j) { return findVal(this->root, i, j); }
};
int main(int argc, char const *argv[]) {
  int testcases;
  cin >> testcases;
  while (testcases--) {
    int n;
    cin >> n;
    string s;
    cin >> s;
    int x, y;
    x = y = 0;
    map<pair<int, int>, int> mp;
    mp[make_pair(0, 0)] = 0;
    int maxL = -1;
    int ansx;
    int ansy;
    for (int i = 1; i <= n; i++) {
      if (s[i - 1] == 'L') {
        x--;
      } else if (s[i - 1] == 'R') {
        x++;
      } else if (s[i - 1] == 'U') {
        y++;
      } else {
        y--;
      }
      if (mp.find(make_pair(x, y)) == mp.end()) {
        mp[make_pair(x, y)] = i;
      } else {
        if (maxL == -1 || (i - mp[make_pair(x, y)] - 1) < maxL) {
          maxL = i - mp[make_pair(x, y)] - 1;
          ansx = mp[make_pair(x, y)] + 1;
          ansy = i;
        }
        mp[make_pair(x, y)] = i;
      }
    }
    if (maxL == -1)
      cout << maxL << endl;
    else
      cout << ansx << " " << ansy << endl;
  }
}
