#include<bits/stdc++.h>
using namespace std ;
string a , b , ra , rb ;
int l ;
int zab[2000000+5] , zarb[2000000+5] , zrab[2000000+5] ;
int llll = 0 ;
void Zcalc(string s , int *z) {
  memset( z , 0 , sizeof z ) ;
  int L = 0, R = 0;
  int n = s.size() ;
  for (int i = 1; i < n ; i++) {
    if (i > R) {
      L = R = i;
      while (R < n && s[R-L] == s[R]) R++;
      z[i] = R-L;
      R--;
    } else {
      int k = i-L;
      if (z[k] < R-i+1) z[i] = z[k];
      else {
        L = i;
        while (R < n && s[R-L] == s[R]) R++;
        z[i] = R-L;
        R--;
      }
    }
  }
}

int main() {

  while( getline(cin , a ) ) {

    getline(cin , b ) ;
    if( (a.size() == 1 && b.size() ==1)||(a.size() != b.size()) ){
      cout << -1 << " " << -1 << endl ;
      continue ;
    }
    ra = a ;
    reverse(ra.begin(),ra.end()) ;
    rb = b ;
    reverse(rb.begin(),rb.end()) ;

    l= a.size()+b.size()+1 ;

    Zcalc(b+'\x7F'+a,zab);
    Zcalc(a+'\x7F'+rb,zarb);
    Zcalc(ra+'\x7F'+b,zrab);

    int ansI=-1 , ansJ=10000000 ;

    for( int i = b.size()+1, j = 0  ; i < l ; i++ , j++ ) {
      int I = j ;
      int J = j+zab[i] ;
      int leftLen = j ;
      int checkLeftLen = zarb[a.size()+1] ;
      if( checkLeftLen >= leftLen ) {
        int rightLen = a.size()+b.size()-i-zab[i]+1 ;
        int checkRightLen = zrab[ a.size() + 1 + zab[i] ];
        if( checkRightLen >= rightLen ){
          if( I > ansI )ansI = I , ansJ = J ;
          else if( I == ansI ){
            if( J < ansJ ){
              ansJ = J ;
            }
          }
        }
      }
    }
    if( ansI+1 == ansJ ) ansJ-- ;
    if( ansI == -1 )cout << -1 << " " << -1 << "\n" ;
    else cout << ansI-1 << " " << ansJ << "\n" ;

  }
  return 0 ;
}


