import
java.util.*;
class
GFG{
static
int
ShortestPath(
int
n, String start,
String finish)
{
HashMap<String,
Boolean> visited =
new
HashMap<String,
Boolean>();
HashMap<String,
Integer> D =
new
HashMap<String,
Integer>();
HashMap<String,
String> src =
new
HashMap<String,
String>();
visited.put(start,
true
);
visited.put(finish,
true
);
D.put(start,
0
);
D.put(finish,
0
);
src.put(start, start);
src.put(finish, finish);
Queue<String> q =
new
LinkedList<>();
q.add(start);
q.add(finish);
while
(q.size() !=
0
)
{
String u = (String)q.peek();
q.remove();
for
(
int
i =
1
; i < n; i++)
{
StringBuilder tmp =
new
StringBuilder(u);
char
t = tmp.charAt(i);
tmp.setCharAt(i, tmp.charAt(i -
1
));
tmp.setCharAt(i -
1
, t);
String v = tmp.toString();
if
(!visited.getOrDefault(v,
false
))
{
visited.put(v,
true
);
src.put(v, src.get(u));
D.put(v, D.get(u) +
1
);
q.add(v);
}
else
if
(src.get(u) != src.get(v))
return
D.get(u) + D.get(v) +
1
;
}
}
return
0
;
}
public
static
void
main(String[] args)
{
String p1 =
"1234"
, p2 =
"4123"
;
int
n = p1.length();
System.out.println(ShortestPath(n, p1, p2));
}
}