
import java.util.*;
public class MatrixDiffusion {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arrs = Arrays.stream(scanner.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
int N = arrs[0];
int M = arrs[1];
int[][] matrix = new int[N][M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
if((i == arrs[2] && j == arrs[3])||(i == arrs[4] && j == arrs[5])){
matrix[i][j] = 1;
}else{
matrix[i][j] = 0;
}
}
}
solve(matrix,arrs);
}
private static void solve(int[][] matrix, int[] arrs) {
LinkedList<int[]> queue = new LinkedList<>();
int[][] directions = new int[][]{{0,1},{1,0},{0,-1},{-1,0}};
queue.add(new int[]{arrs[2],arrs[3]});
queue.add(new int[]{arrs[4],arrs[5]});
int times = 0;
while(!queue.isEmpty()){
boolean flag = false;
int size = queue.size();
for(int j=0;j<size;j++){
int[] ints = queue.poll();
for(int i =0;i<4;i++){
int x = ints[0]+directions[i][0];
int y = ints[1]+directions[i][1];
if(x>=0 && x<arrs[0] && y>=0 && y<arrs[1] && matrix[x][y]==0){
matrix[x][y]=1;
queue.add(new int[]{x,y});
flag = true;
}
}
}
if(flag){
times++;
}
}
System.out.println(times);
}
}