#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF 1 << 29 #define LL long long int LL const MOD = 1000000007; int main(){ cin.tie(0); ios::sync_with_stdio(false); LL h,w; cin >> h >> w; vector str(h); for(int i = 0; i < h; i++){ cin >> str[i]; } double ans = INF; for(int i = 1; i < w+1; i++){ double tmp = 0.0; for(int j = 0; j < h; j++){ for(int k = 0; k < w; k++){ if(str[j][k] == '1'){ tmp += sqrt((double)((j+1)*(j+1)+(i-(k+1))*(i-(k+1)))); } } } if(tmp < ans){ ans = tmp; } } for(int i = 1; i < w+1; i++){ double tmp = 0.0; for(int j = 0; j < h; j++){ for(int k = 0; k < w; k++){ if(str[j][k] == '1'){ tmp += sqrt((double)(((j+1)-(h+1))*((j+1)-(h+1))+(i-(k+1))*(i-(k+1)))); } } } if(tmp < ans){ ans = tmp; } } for(int i = 1; i < h+1; i++){ double tmp = 0.0; for(int j = 0; j < h; j++){ for(int k = 0; k < w; k++){ if(str[j][k] == '1'){ tmp += sqrt((double)(((j+1)-i)*((j+1)-i)+((k+1))*((k+1)))); } } } if(tmp < ans){ ans = tmp; } } for(int i = 1; i < h+1; i++){ double tmp = 0.0; for(int j = 0; j < h; j++){ for(int k = 0; k < w; k++){ if(str[j][k] == '1'){ tmp += sqrt((double)(((j+1)-i)*((j+1)-i)+((w+1)-(k+1))*((w+1)-(k+1)))); } } } if(tmp < ans){ ans = tmp; } } cout << fixed; cout << setprecision(17) << ans << endl; return 0; }