import sys
def solve():
s = sys.stdin.readline().strip()
n = len(s)
mismatch = []
for p in range(n // 2):
q = n - 1 - p
if s[p] != s[q]:
mismatch.append((p, q))
M = len(mismatch)
# Проверяет за O(1), станет ли строка палиндромом после обмена s[i] и s[j]
def ok_after_swap(i, j):
for k in {min(i, n - 1 - i), min(j, n - 1 - j)}:
a, b = k, n - 1 - k
va = s[j] if a == i else (s[i] if a == j else s[a])
vb = s[j] if b == i else (s[i] if b == j else s[b])
if va != vb:
return False
return True
if M == 0:
# Строка уже палиндром — меняем любые два одинаковых символа
seen = {}
for idx, ch in enumerate(s):
if ch in seen:
print(seen[ch] + 1, idx + 1)
return
seen[ch] = idx
print("Infeasible")
return
if M > 2:
print("Infeasible")
return
if M == 1:
p, q = mismatch[0]
for j in range(n):
if j != p and j != q:
if ok_after_swap(p, j):
print(min(p, j) + 1, max(p, j) + 1)
return
if ok_after_swap(q, j):
print(min(q, j) + 1, max(q, j) + 1)
return
else:
(p1, q1), (p2, q2) = mismatch
for i in (p1, q1):
for j in (p2, q2):
if ok_after_swap(i, j):
print(min(i, j) + 1, max(i, j) + 1)
return
print("Infeasible")
solve()